1///////////////////////////////////////////////////////////////////////////// 2// Name: src/xrc/xh_combo.cpp 3// Purpose: XRC resource for wxComboBox 4// Author: Bob Mitchell 5// Created: 2000/03/21 6// RCS-ID: $Id: xh_combo.cpp 56715 2008-11-09 12:40:07Z VZ $ 7// Copyright: (c) 2000 Bob Mitchell and Verant Interactive 8// Licence: wxWindows licence 9///////////////////////////////////////////////////////////////////////////// 10 11// For compilers that support precompilation, includes "wx.h". 12#include "wx/wxprec.h" 13 14#ifdef __BORLANDC__ 15 #pragma hdrstop 16#endif 17 18#if wxUSE_XRC && wxUSE_COMBOBOX 19 20#include "wx/xrc/xh_combo.h" 21 22#ifndef WX_PRECOMP 23 #include "wx/intl.h" 24 #include "wx/combobox.h" 25 #include "wx/textctrl.h" // for wxTE_PROCESS_ENTER 26#endif 27 28IMPLEMENT_DYNAMIC_CLASS(wxComboBoxXmlHandler, wxXmlResourceHandler) 29 30wxComboBoxXmlHandler::wxComboBoxXmlHandler() 31 :wxXmlResourceHandler() 32 ,m_insideBox(false) 33{ 34 XRC_ADD_STYLE(wxCB_SIMPLE); 35 XRC_ADD_STYLE(wxCB_SORT); 36 XRC_ADD_STYLE(wxCB_READONLY); 37 XRC_ADD_STYLE(wxCB_DROPDOWN); 38 XRC_ADD_STYLE(wxTE_PROCESS_ENTER); 39 AddWindowStyles(); 40} 41 42wxObject *wxComboBoxXmlHandler::DoCreateResource() 43{ 44 if( m_class == wxT("wxComboBox")) 45 { 46 // find the selection 47 long selection = GetLong( wxT("selection"), -1 ); 48 49 // need to build the list of strings from children 50 m_insideBox = true; 51 CreateChildrenPrivately(NULL, GetParamNode(wxT("content"))); 52 53 XRC_MAKE_INSTANCE(control, wxComboBox) 54 55 control->Create(m_parentAsWindow, 56 GetID(), 57 GetText(wxT("value")), 58 GetPosition(), GetSize(), 59 strList, 60 GetStyle(), 61 wxDefaultValidator, 62 GetName()); 63 64 if (selection != -1) 65 control->SetSelection(selection); 66 67 SetupWindow(control); 68 69 strList.Clear(); // dump the strings 70 71 return control; 72 } 73 else 74 { 75 // on the inside now. 76 // handle <item>Label</item> 77 78 // add to the list 79 wxString str = GetNodeContent(m_node); 80 if (m_resource->GetFlags() & wxXRC_USE_LOCALE) 81 str = wxGetTranslation(str, m_resource->GetDomain()); 82 strList.Add(str); 83 84 return NULL; 85 } 86} 87 88bool wxComboBoxXmlHandler::CanHandle(wxXmlNode *node) 89{ 90 return (IsOfClass(node, wxT("wxComboBox")) || 91 (m_insideBox && node->GetName() == wxT("item"))); 92} 93 94#endif // wxUSE_XRC && wxUSE_COMBOBOX 95