1///////////////////////////////////////////////////////////////////////////// 2// Name: src/xrc/xh_listb.cpp 3// Purpose: XRC resource for wxListBox 4// Author: Bob Mitchell & Vaclav Slavik 5// Created: 2000/07/29 6// RCS-ID: $Id: xh_listb.cpp 42258 2006-10-22 22:12:32Z 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_LISTBOX 19 20#include "wx/xrc/xh_listb.h" 21 22#ifndef WX_PRECOMP 23 #include "wx/intl.h" 24 #include "wx/listbox.h" 25#endif 26 27IMPLEMENT_DYNAMIC_CLASS(wxListBoxXmlHandler, wxXmlResourceHandler) 28 29wxListBoxXmlHandler::wxListBoxXmlHandler() 30 : wxXmlResourceHandler(), 31 m_insideBox(false) 32{ 33 XRC_ADD_STYLE(wxLB_SINGLE); 34 XRC_ADD_STYLE(wxLB_MULTIPLE); 35 XRC_ADD_STYLE(wxLB_EXTENDED); 36 XRC_ADD_STYLE(wxLB_HSCROLL); 37 XRC_ADD_STYLE(wxLB_ALWAYS_SB); 38 XRC_ADD_STYLE(wxLB_NEEDED_SB); 39 XRC_ADD_STYLE(wxLB_SORT); 40 AddWindowStyles(); 41} 42 43wxObject *wxListBoxXmlHandler::DoCreateResource() 44{ 45 if ( m_class == wxT("wxListBox")) 46 { 47 // find the selection 48 long selection = GetLong(wxT("selection"), -1); 49 50 // need to build the list of strings from children 51 m_insideBox = true; 52 CreateChildrenPrivately(NULL, GetParamNode(wxT("content"))); 53 m_insideBox = false; 54 55 XRC_MAKE_INSTANCE(control, wxListBox) 56 57 control->Create(m_parentAsWindow, 58 GetID(), 59 GetPosition(), GetSize(), 60 strList, 61 GetStyle(), 62 wxDefaultValidator, 63 GetName()); 64 65 if (selection != -1) 66 control->SetSelection(selection); 67 68 SetupWindow(control); 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 wxListBoxXmlHandler::CanHandle(wxXmlNode *node) 89{ 90 return (IsOfClass(node, wxT("wxListBox")) || 91 (m_insideBox && node->GetName() == wxT("item"))); 92} 93 94#endif // wxUSE_XRC && wxUSE_LISTBOX 95