home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / contrib / src / xrc / xh_radbx.cpp < prev    next >
C/C++ Source or Header  |  2002-09-01  |  3KB  |  104 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        xh_radbx.cpp
  3. // Purpose:     XRC resource for wxRadioBox
  4. // Author:      Bob Mitchell
  5. // Created:     2000/03/21
  6. // RCS-ID:      $Id: xh_radbx.cpp,v 1.6 2002/09/01 17:11:38 VS Exp $
  7. // Copyright:   (c) 2000 Bob Mitchell and Verant Interactive
  8. // Licence:     wxWindows licence
  9. /////////////////////////////////////////////////////////////////////////////
  10.  
  11. #ifdef __GNUG__
  12. #pragma implementation "xh_radbx.h"
  13. #endif
  14.  
  15. // For compilers that support precompilation, includes "wx.h".
  16. #include "wx/wxprec.h"
  17.  
  18. #ifdef __BORLANDC__
  19.     #pragma hdrstop
  20. #endif
  21.  
  22. #include "wx/xrc/xh_radbx.h"
  23. #include "wx/radiobox.h"
  24. #include "wx/intl.h"
  25.  
  26. #if wxUSE_RADIOBOX
  27.  
  28. wxRadioBoxXmlHandler::wxRadioBoxXmlHandler() 
  29. : wxXmlResourceHandler(), m_insideBox(FALSE)
  30. {
  31.     XRC_ADD_STYLE(wxRA_SPECIFY_COLS);
  32.     XRC_ADD_STYLE(wxRA_HORIZONTAL);
  33.     XRC_ADD_STYLE(wxRA_SPECIFY_ROWS);
  34.     XRC_ADD_STYLE(wxRA_VERTICAL);
  35.     AddWindowStyles();
  36. }
  37.  
  38. wxObject *wxRadioBoxXmlHandler::DoCreateResource()
  39.     if( m_class == wxT("wxRadioBox"))
  40.     {
  41.         // find the selection
  42.         long selection = GetLong( wxT("selection"), -1 );
  43.  
  44.         // need to build the list of strings from children
  45.         m_insideBox = TRUE;
  46.         CreateChildrenPrivately( NULL, GetParamNode(wxT("content")));
  47.         wxString *strings = (wxString *) NULL;
  48.         if( strList.GetCount() > 0 )
  49.         {
  50.             strings = new wxString[strList.GetCount()];
  51.             int count = strList.GetCount();
  52.             for( int i = 0; i < count; i++ )
  53.                 strings[i]=strList[i];
  54.         }
  55.  
  56.         XRC_MAKE_INSTANCE(control, wxRadioBox)
  57.  
  58.         control->Create(m_parentAsWindow,
  59.                         GetID(),
  60.                         GetText(wxT("label")),
  61.                         GetPosition(), GetSize(),
  62.                         strList.GetCount(),
  63.                         strings,
  64.                         GetLong(wxT("dimension"), 1),
  65.                         GetStyle(),
  66.                         wxDefaultValidator,
  67.                         GetName());
  68.  
  69.         if (selection != -1)
  70.             control->SetSelection(selection);
  71.  
  72.         SetupWindow(control);
  73.  
  74.         if (strings != NULL)
  75.             delete[] strings;
  76.         strList.Clear();    // dump the strings   
  77.  
  78.         return control;
  79.     }
  80.     else
  81.     {
  82.         // on the inside now.
  83.         // handle <item selected="boolean">Label</item>
  84.  
  85.         // add to the list
  86.         wxString str = GetNodeContent(m_node);
  87.         if (m_resource->GetFlags() & wxXRC_USE_LOCALE)
  88.             str = wxGetTranslation(str);
  89.         strList.Add(str);
  90.  
  91.         return NULL;
  92.     }
  93.  
  94. }
  95.  
  96. bool wxRadioBoxXmlHandler::CanHandle(wxXmlNode *node)
  97. {
  98.     return (IsOfClass(node, wxT("wxRadioBox")) ||
  99.            (m_insideBox && node->GetName() == wxT("item")));
  100. }
  101.  
  102. #endif
  103.