Add "inherit" to <font> XRC tag.
This allows to construct a font based on the parent window font instead of either fully specifying all font parameters or basing it on a standard font. Closes #14632. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72572 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -557,6 +557,7 @@ All (GUI):
|
|||||||
- Fix text origin and extent computations in wxSVGFileDC (Neil Chittenden).
|
- Fix text origin and extent computations in wxSVGFileDC (Neil Chittenden).
|
||||||
- Show tooltips for the too long items in generic wxTreeCtrl (Steven Houchins).
|
- Show tooltips for the too long items in generic wxTreeCtrl (Steven Houchins).
|
||||||
- Add wxStyledTextCtrl::AnnotationClearLine() (sentieshar).
|
- Add wxStyledTextCtrl::AnnotationClearLine() (sentieshar).
|
||||||
|
- Add "inherit" to <font> XRC tag (Steffen Olszewski, Gero Meßsysteme GmbH).
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
|
@@ -402,7 +402,8 @@ Examples:
|
|||||||
|
|
||||||
XRC uses similar, but more flexible, abstract description of fonts to that
|
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
|
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
|
The font property element is "composite" element: unlike majority of
|
||||||
properties, it doesn't have text value but contains several child elements
|
properties, it doesn't have text value but contains several child elements
|
||||||
@@ -413,7 +414,8 @@ and can be one of the following "sub-properties":
|
|||||||
@hdr3col{property, type, description}
|
@hdr3col{property, type, description}
|
||||||
@row3col{size, unsigned integer,
|
@row3col{size, unsigned integer,
|
||||||
Pixel size of the font (default: wxNORMAL_FONT's size or @c sysfont's
|
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,
|
@row3col{style, enum,
|
||||||
One of "normal", "italic" or "slant" (default: normal).}
|
One of "normal", "italic" or "slant" (default: normal).}
|
||||||
@row3col{weight, enum,
|
@row3col{weight, enum,
|
||||||
@@ -431,14 +433,18 @@ and can be one of the following "sub-properties":
|
|||||||
(default: unspecified).}
|
(default: unspecified).}
|
||||||
@row3col{sysfont, ,
|
@row3col{sysfont, ,
|
||||||
Symbolic name of system standard font(one of wxSYS_*_FONT constants).}
|
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,
|
@row3col{relativesize, float,
|
||||||
Float, font size relative to chosen system font's size; can only be
|
Float, font size relative to chosen system font's or inherited font's size;
|
||||||
used when 'sysfont' is used and when 'size' is not used.}
|
can only be used when 'sysfont' or 'inherit' is used and when 'size' is not
|
||||||
|
used.}
|
||||||
@endTable
|
@endTable
|
||||||
|
|
||||||
All of them are optional, if they are missing, appropriate wxFont default is
|
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
|
used. If the @c sysfont or @c inherit property is used, then the defaults are
|
||||||
instead.
|
taken from it instead.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
@code
|
@code
|
||||||
@@ -456,6 +462,10 @@ Examples:
|
|||||||
</font>
|
</font>
|
||||||
@endcode
|
@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
|
@section overview_xrcformat_windows Controls and Windows
|
||||||
|
|
||||||
|
@@ -594,7 +594,7 @@ protected:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Gets a font.
|
// 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)
|
// Gets the value of a boolean attribute (only "0" and "1" are valid values)
|
||||||
bool GetBoolAttr(const wxString& attr, bool defaultv);
|
bool GetBoolAttr(const wxString& attr, bool defaultv);
|
||||||
|
@@ -934,20 +934,65 @@ lay them out using wxSizers, absolute positioning, everything you like!
|
|||||||
<object class="choicebookpage">
|
<object class="choicebookpage">
|
||||||
<label>wxStaticText</label>
|
<label>wxStaticText</label>
|
||||||
<object class="wxPanel" name="statictext">
|
<object class="wxPanel" name="statictext">
|
||||||
|
<font>
|
||||||
|
<size>12</size>
|
||||||
|
</font>
|
||||||
<object class="wxFlexGridSizer">
|
<object class="wxFlexGridSizer">
|
||||||
<cols>1</cols>
|
<cols>2</cols>
|
||||||
<rows>0</rows>
|
<rows>0</rows>
|
||||||
<vgap>0</vgap>
|
<vgap>0</vgap>
|
||||||
<hgap>0</hgap>
|
<hgap>0</hgap>
|
||||||
<growablecols>0</growablecols>
|
<growablecols>0,1</growablecols>
|
||||||
<growablerows>0</growablerows>
|
<growablerows>0,1,2</growablerows>
|
||||||
<object class="sizeritem">
|
<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>
|
<border>5</border>
|
||||||
<object class="wxStaticText" name="controls_statictext">
|
<object class="wxStaticText" name="controls_statictext">
|
||||||
<label>It was a dark and stormy night.</label>
|
<label>It was a dark and stormy night.</label>
|
||||||
</object>
|
</object>
|
||||||
</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>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
@@ -150,7 +150,7 @@ void wxListCtrlXmlHandler::HandleListItem()
|
|||||||
if (HasParam(wxT("data")))
|
if (HasParam(wxT("data")))
|
||||||
item.SetData(GetLong(wxT("data")));
|
item.SetData(GetLong(wxT("data")));
|
||||||
if (HasParam(wxT("font")))
|
if (HasParam(wxT("font")))
|
||||||
item.SetFont(GetFont());
|
item.SetFont(GetFont(wxT("font"), list));
|
||||||
if (HasParam(wxT("state")))
|
if (HasParam(wxT("state")))
|
||||||
item.SetState(GetStyle(wxT("state")));
|
item.SetState(GetStyle(wxT("state")));
|
||||||
if (HasParam(wxT("textcolour")))
|
if (HasParam(wxT("textcolour")))
|
||||||
|
@@ -2201,7 +2201,7 @@ static wxFont GetSystemFont(const wxString& name)
|
|||||||
return wxNullFont;
|
return wxNullFont;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFont wxXmlResourceHandler::GetFont(const wxString& param)
|
wxFont wxXmlResourceHandler::GetFont(const wxString& param, wxWindow* parent)
|
||||||
{
|
{
|
||||||
wxXmlNode *font_node = GetParamNode(param);
|
wxXmlNode *font_node = GetParamNode(param);
|
||||||
if (font_node == NULL)
|
if (font_node == NULL)
|
||||||
@@ -2304,8 +2304,21 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param)
|
|||||||
}
|
}
|
||||||
#endif // wxUSE_FONTMAP
|
#endif // wxUSE_FONTMAP
|
||||||
|
|
||||||
|
wxFont font;
|
||||||
|
|
||||||
// is this font based on a system 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())
|
if (font.IsOk())
|
||||||
{
|
{
|
||||||
@@ -2368,9 +2381,9 @@ void wxXmlResourceHandler::SetupWindow(wxWindow *wnd)
|
|||||||
wnd->SetToolTip(GetText(wxT("tooltip")));
|
wnd->SetToolTip(GetText(wxT("tooltip")));
|
||||||
#endif
|
#endif
|
||||||
if (HasParam(wxT("font")))
|
if (HasParam(wxT("font")))
|
||||||
wnd->SetFont(GetFont(wxT("font")));
|
wnd->SetFont(GetFont(wxT("font"), wnd));
|
||||||
if (HasParam(wxT("ownfont")))
|
if (HasParam(wxT("ownfont")))
|
||||||
wnd->SetOwnFont(GetFont(wxT("ownfont")));
|
wnd->SetOwnFont(GetFont(wxT("ownfont"), wnd));
|
||||||
if (HasParam(wxT("help")))
|
if (HasParam(wxT("help")))
|
||||||
wnd->SetHelpText(GetText(wxT("help")));
|
wnd->SetHelpText(GetText(wxT("help")));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user