1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
11 #pragma implementation "checklst.h"
14 #include "wx/checklst.h"
16 //-----------------------------------------------------------------------------
18 //-----------------------------------------------------------------------------
20 IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox
,wxListBox
)
22 wxCheckListBox::wxCheckListBox() :
25 m_hasCheckBoxes
= TRUE
;
27 wxCheckListBox::wxCheckListBox(wxWindow
*parent
, wxWindowID id
,
28 const wxPoint
& pos
= wxDefaultPosition
,
29 const wxSize
& size
= wxDefaultSize
,
31 const wxString choices
[] = NULL
,
33 const wxValidator
& validator
= wxDefaultValidator
,
34 const wxString
& name
= wxListBoxNameStr
)
36 m_hasCheckBoxes
= TRUE
;
37 wxListBox::Create( parent
, id
, pos
, size
, nStrings
, choices
, style
, validator
, name
);
40 bool wxCheckListBox::IsChecked( int index
) const
42 wxCHECK_MSG( m_list
!= NULL
, FALSE
, "invalid checklistbox" );
44 GList
*child
= g_list_nth( m_list
->children
, index
);
47 GtkBin
*bin
= GTK_BIN( child
->data
);
48 GtkLabel
*label
= GTK_LABEL( bin
->child
);
50 wxString str
= label
->label
;
52 return (str
[1] == 'X');
55 wxFAIL_MSG("wrong checklistbox index");
59 void wxCheckListBox::Check( int index
, bool check
)
61 wxCHECK_RET( m_list
!= NULL
, "invalid checklistbox" );
63 GList
*child
= g_list_nth( m_list
->children
, index
);
66 GtkBin
*bin
= GTK_BIN( child
->data
);
67 GtkLabel
*label
= GTK_LABEL( bin
->child
);
69 wxString str
= label
->label
;
71 if (check
== (str
[1] == 'X')) return;
74 str
.SetChar( 1, 'X' );
76 str
.SetChar( 1, '-' );
78 gtk_label_set( label
, str
);
80 wxCommandEvent
event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED
, GetId() );
81 event
.SetEventObject( this );
82 event
.SetInt( index
);
83 GetEventHandler()->ProcessEvent( event
);
88 wxFAIL_MSG("wrong checklistbox index");