added support for radiobox items tooltips in XRC

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39036 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-05-04 22:54:17 +00:00
parent ab0c98223a
commit d64ad2c7e1
4 changed files with 64 additions and 21 deletions

View File

@ -408,6 +408,9 @@ wxRadioBox
This control may have "dimension" (major dimension) and (initial) "selection"
Integer subelements and a composite "content" element similar to wxCheckList.
The only difference is that the "item" subelements can have an optional
"tooltip=I18nString" attribute to specify the per-item tooltip.
wxScrolledWindow
----------------

View File

@ -24,9 +24,14 @@ public:
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_insideBox;
wxArrayString strList;
// the items labels
wxArrayString labels;
// the items tooltips (some or all elements may be empty)
wxArrayString tooltips;
};
#endif
#endif // wxUSE_RADIOBOX
#endif // _WX_XH_RADBX_H_

View File

@ -74,6 +74,7 @@
<object class="sizeritem">
<flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
<border>5</border>
<size>300,60</size>
<object class="wxToolBar">
<style>wxTB_FLAT|wxTB_NODIVIDER</style>
<margins>2,2</margins>
@ -118,6 +119,13 @@
<bitmap>variable.xpm</bitmap>
<longhelp>Replace variables in the XRC file at runtime</longhelp>
</object>
<object class="wxComboBox">
<content>
<item>Just</item>
<item>a combobox</item>
<item>in the toolbar</item>
</content>
</object>
</object>
</object>
<object class="sizeritem">
@ -175,6 +183,13 @@
<bitmap>variable.xpm</bitmap>
<longhelp>Replace variables in the XRC file at runtime</longhelp>
</object>
<object class="wxComboBox">
<content>
<item>Just</item>
<item>a combobox</item>
<item>in the toolbar</item>
</content>
</object>
</object>
</object>
</object>
@ -618,9 +633,9 @@
<dimension>1</dimension>
<selection>0</selection>
<content>
<item>Power 108</item>
<item>WMMS 100.7</item>
<item>Energy 98.3</item>
<item tooltip="Powerful radio station">Power 108</item>
<item tooltip="">WMMS 100.7</item>
<item tooltip="E=mc^2">Energy 98.3</item>
<item>CHUM FM</item>
<item>92FM</item>
</content>

View File

@ -39,7 +39,7 @@ wxRadioBoxXmlHandler::wxRadioBoxXmlHandler()
wxObject *wxRadioBoxXmlHandler::DoCreateResource()
{
if( m_class == wxT("wxRadioBox"))
if ( m_class == wxT("wxRadioBox"))
{
// find the selection
long selection = GetLong( wxT("selection"), -1 );
@ -47,13 +47,18 @@ wxObject *wxRadioBoxXmlHandler::DoCreateResource()
// need to build the list of strings from children
m_insideBox = true;
CreateChildrenPrivately( NULL, GetParamNode(wxT("content")));
wxString *strings = (wxString *) NULL;
if( strList.GetCount() > 0 )
wxString *strings;
if ( !labels.empty() )
{
strings = new wxString[strList.GetCount()];
int count = strList.GetCount();
for( int i = 0; i < count; i++ )
strings[i]=strList[i];
strings = new wxString[labels.size()];
const unsigned count = labels.size();
for( unsigned i = 0; i < count; i++ )
strings[i] = labels[i];
}
else
{
strings = NULL;
}
XRC_MAKE_INSTANCE(control, wxRadioBox)
@ -62,34 +67,49 @@ wxObject *wxRadioBoxXmlHandler::DoCreateResource()
GetID(),
GetText(wxT("label")),
GetPosition(), GetSize(),
strList.GetCount(),
labels.size(),
strings,
GetLong(wxT("dimension"), 1),
GetStyle(),
wxDefaultValidator,
GetName());
delete[] strings;
if (selection != -1)
control->SetSelection(selection);
SetupWindow(control);
if (strings != NULL)
delete[] strings;
strList.Clear(); // dump the strings
const unsigned count = labels.size();
for( unsigned i = 0; i < count; i++ )
{
if ( !tooltips[i].empty() )
control->SetItemToolTip(i, tooltips[i]);
}
labels.clear(); // dump the strings
tooltips.clear(); // dump the tooltips
return control;
}
else
else // inside the radiobox element
{
// on the inside now.
// handle <item selected="boolean">Label</item>
// we handle <item tooltip="...">Label</item> constructs here
// add to the list
wxString str = GetNodeContent(m_node);
wxString tooltip;
m_node->GetPropVal(wxT("tooltip"), &tooltip);
if (m_resource->GetFlags() & wxXRC_USE_LOCALE)
{
str = wxGetTranslation(str);
strList.Add(str);
if ( !tooltip.empty() )
tooltip = wxGetTranslation(tooltip);
}
labels.push_back(str);
tooltips.push_back(tooltip);
return NULL;
}