~ubuntu-dev/wxwidgets2.6/upstream-debian

« back to all changes in this revision

Viewing changes to src/xrc/xh_radbx.cpp

  • Committer: Daniel T Chen
  • Date: 2006-06-26 10:15:11 UTC
  • Revision ID: crimsun@ubuntu.com-20060626101511-a4436cec4c6d9b35
ImportĀ DebianĀ 2.6.3.2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.12 2005/01/07 21:33:14 VS Exp $
 
7
// Copyright:   (c) 2000 Bob Mitchell and Verant Interactive
 
8
// Licence:     wxWindows licence
 
9
/////////////////////////////////////////////////////////////////////////////
 
10
 
 
11
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 
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
#if wxUSE_XRC && wxUSE_RADIOBOX
 
23
 
 
24
#include "wx/xrc/xh_radbx.h"
 
25
#include "wx/radiobox.h"
 
26
#include "wx/intl.h"
 
27
 
 
28
IMPLEMENT_DYNAMIC_CLASS(wxRadioBoxXmlHandler, wxXmlResourceHandler)
 
29
 
 
30
wxRadioBoxXmlHandler::wxRadioBoxXmlHandler()
 
31
: wxXmlResourceHandler(), m_insideBox(false)
 
32
{
 
33
    XRC_ADD_STYLE(wxRA_SPECIFY_COLS);
 
34
    XRC_ADD_STYLE(wxRA_HORIZONTAL);
 
35
    XRC_ADD_STYLE(wxRA_SPECIFY_ROWS);
 
36
    XRC_ADD_STYLE(wxRA_VERTICAL);
 
37
    AddWindowStyles();
 
38
}
 
39
 
 
40
wxObject *wxRadioBoxXmlHandler::DoCreateResource()
 
41
{
 
42
    if( m_class == wxT("wxRadioBox"))
 
43
    {
 
44
        // find the selection
 
45
        long selection = GetLong( wxT("selection"), -1 );
 
46
 
 
47
        // need to build the list of strings from children
 
48
        m_insideBox = true;
 
49
        CreateChildrenPrivately( NULL, GetParamNode(wxT("content")));
 
50
        wxString *strings = (wxString *) NULL;
 
51
        if( strList.GetCount() > 0 )
 
52
        {
 
53
            strings = new wxString[strList.GetCount()];
 
54
            int count = strList.GetCount();
 
55
            for( int i = 0; i < count; i++ )
 
56
                strings[i]=strList[i];
 
57
        }
 
58
 
 
59
        XRC_MAKE_INSTANCE(control, wxRadioBox)
 
60
 
 
61
        control->Create(m_parentAsWindow,
 
62
                        GetID(),
 
63
                        GetText(wxT("label")),
 
64
                        GetPosition(), GetSize(),
 
65
                        strList.GetCount(),
 
66
                        strings,
 
67
                        GetLong(wxT("dimension"), 1),
 
68
                        GetStyle(),
 
69
                        wxDefaultValidator,
 
70
                        GetName());
 
71
 
 
72
        if (selection != -1)
 
73
            control->SetSelection(selection);
 
74
 
 
75
        SetupWindow(control);
 
76
 
 
77
        if (strings != NULL)
 
78
            delete[] strings;
 
79
        strList.Clear();    // dump the strings
 
80
 
 
81
        return control;
 
82
    }
 
83
    else
 
84
    {
 
85
        // on the inside now.
 
86
        // handle <item selected="boolean">Label</item>
 
87
 
 
88
        // add to the list
 
89
        wxString str = GetNodeContent(m_node);
 
90
        if (m_resource->GetFlags() & wxXRC_USE_LOCALE)
 
91
            str = wxGetTranslation(str);
 
92
        strList.Add(str);
 
93
 
 
94
        return NULL;
 
95
    }
 
96
 
 
97
}
 
98
 
 
99
bool wxRadioBoxXmlHandler::CanHandle(wxXmlNode *node)
 
100
{
 
101
    return (IsOfClass(node, wxT("wxRadioBox")) ||
 
102
           (m_insideBox && node->GetName() == wxT("item")));
 
103
}
 
104
 
 
105
#endif // wxUSE_XRC && wxUSE_RADIOBOX