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_combo.cpp < prev    next >
C/C++ Source or Header  |  2002-09-01  |  3KB  |  102 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        xh_combo.cpp
  3. // Purpose:     XRC resource for wxRadioBox
  4. // Author:      Bob Mitchell
  5. // Created:     2000/03/21
  6. // RCS-ID:      $Id: xh_combo.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_combo.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_combo.h"
  23. #include "wx/combobox.h"
  24. #include "wx/intl.h"
  25.  
  26. #if wxUSE_COMBOBOX
  27.  
  28. wxComboBoxXmlHandler::wxComboBoxXmlHandler() 
  29. : wxXmlResourceHandler() , m_insideBox(FALSE)
  30. {
  31.     XRC_ADD_STYLE(wxCB_SIMPLE);
  32.     XRC_ADD_STYLE(wxCB_SORT);
  33.     XRC_ADD_STYLE(wxCB_READONLY);
  34.     XRC_ADD_STYLE(wxCB_DROPDOWN);
  35.     AddWindowStyles();
  36. }
  37.  
  38. wxObject *wxComboBoxXmlHandler::DoCreateResource()
  39.     if( m_class == wxT("wxComboBox"))
  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, wxComboBox)
  57.  
  58.         control->Create(m_parentAsWindow,
  59.                         GetID(),
  60.                         GetText(wxT("value")),
  61.                         GetPosition(), GetSize(),
  62.                         strList.GetCount(),
  63.                         strings,
  64.                         GetStyle(),
  65.                         wxDefaultValidator,
  66.                         GetName());
  67.  
  68.         if (selection != -1)
  69.             control->SetSelection(selection);
  70.  
  71.         SetupWindow(control);
  72.  
  73.         if (strings != NULL)
  74.             delete[] strings;
  75.         strList.Clear();    // dump the strings   
  76.  
  77.         return control;
  78.     }
  79.     else
  80.     {
  81.         // on the inside now.
  82.         // handle <item>Label</item>
  83.  
  84.         // add to the list
  85.         wxString str = GetNodeContent(m_node);
  86.         if (m_resource->GetFlags() & wxXRC_USE_LOCALE)
  87.             str = wxGetTranslation(str);
  88.         strList.Add(str);
  89.  
  90.         return NULL;
  91.     }
  92. }
  93.  
  94. bool wxComboBoxXmlHandler::CanHandle(wxXmlNode *node)
  95. {
  96.     return (IsOfClass(node, wxT("wxComboBox")) ||
  97.            (m_insideBox && node->GetName() == wxT("item")));
  98. }
  99.  
  100. #endif
  101.