1///////////////////////////////////////////////////////////////////////////// 2// Name: xh_simplehtmllbox.cpp 3// Purpose: XML resource handler for wxSimpleHtmlListBox 4// Author: Francesco Montorsi 5// Created: 2006/10/21 6// RCS-ID: $Id: xh_htmllbox.cpp 42257 2006-10-22 22:09:16Z VZ $ 7// Copyright: (c) 2006 Francesco Montorsi 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_HTML 19 20#include "wx/xrc/xh_htmllbox.h" 21 22#include "wx/htmllbox.h" 23#include "wx/filesys.h" 24 25IMPLEMENT_DYNAMIC_CLASS(wxSimpleHtmlListBoxXmlHandler, wxXmlResourceHandler) 26 27wxSimpleHtmlListBoxXmlHandler::wxSimpleHtmlListBoxXmlHandler() 28: wxXmlResourceHandler(), m_insideBox(false) 29{ 30 XRC_ADD_STYLE(wxHLB_DEFAULT_STYLE); 31 XRC_ADD_STYLE(wxHLB_MULTIPLE); 32 AddWindowStyles(); 33} 34 35wxObject *wxSimpleHtmlListBoxXmlHandler::DoCreateResource() 36{ 37 if ( m_class == wxT("wxSimpleHtmlListBox")) 38 { 39 // find the selection 40 long selection = GetLong(wxT("selection"), -1); 41 42 // need to build the list of strings from children 43 m_insideBox = true; 44 CreateChildrenPrivately(NULL, GetParamNode(wxT("content"))); 45 m_insideBox = false; 46 47 XRC_MAKE_INSTANCE(control, wxSimpleHtmlListBox) 48 49 control->Create(m_parentAsWindow, 50 GetID(), 51 GetPosition(), GetSize(), 52 strList, 53 GetStyle(_T("style"), wxHLB_DEFAULT_STYLE), 54 wxDefaultValidator, 55 GetName()); 56 57 if (selection != -1) 58 control->SetSelection(selection); 59 60 SetupWindow(control); 61 strList.Clear(); // dump the strings 62 63 return control; 64 } 65 else 66 { 67 // on the inside now. 68 // handle <item>Label</item> 69 70 // add to the list 71 wxString str = GetNodeContent(m_node); 72 if (m_resource->GetFlags() & wxXRC_USE_LOCALE) 73 str = wxGetTranslation(str, m_resource->GetDomain()); 74 strList.Add(str); 75 76 return NULL; 77 } 78} 79 80bool wxSimpleHtmlListBoxXmlHandler::CanHandle(wxXmlNode *node) 81{ 82 return (IsOfClass(node, wxT("wxSimpleHtmlListBox")) || 83 (m_insideBox && node->GetName() == wxT("item"))); 84} 85 86#endif // wxUSE_XRC && wxUSE_HTML 87