]> git.saurik.com Git - wxWidgets.git/commitdiff
added support for radiobox items tooltips in XRC
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 4 May 2006 22:54:17 +0000 (22:54 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 4 May 2006 22:54:17 +0000 (22:54 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39036 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/tech/tn0014.txt
include/wx/xrc/xh_radbx.h
samples/xrc/rc/controls.xrc
src/xrc/xh_radbx.cpp

index 9001edbbfa35df65e4db6ed9837a05d29e4eda15..ad67f4574268fe36bc111e9aaaea025163c89c41 100644 (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
 ----------------
index c68da5a3b4edd2e11ee84aaf571f1ff9a2a77fa4..ac1c14b1d7744ae08aa2556826931cfd17fcc200 100644 (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_
index 707441abc597ce3aa59334585d0e6868557c2a21..59c5b353744af4529e0fb28e216cab57aaaa4835 100644 (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>
                                         <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">
                                         <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>
                                     <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>
index 7bc108302e1cbf1a0369ee0a0d69487ed6175ec8..9beea7ba9dfeea4cfe5b15af180d7552e51e2cb9 100644 (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[labels.size()];
+            const unsigned count = labels.size();
+            for( unsigned i = 0; i < count; i++ )
+                strings[i] = labels[i];
+        }
+        else
         {
-            strings = new wxString[strList.GetCount()];
-            int count = strList.GetCount();
-            for( int i = 0; i < count; i++ )
-                strings[i]=strList[i];
+            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;
     }