]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/gtk/checklst.cpp
A little clarification
[wxWidgets.git] / src / gtk / checklst.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: checklst.cpp
3// Purpose:
4// Author: Robert Roebling
5// Id: $Id$
6// Copyright: (c) 1998 Robert Roebling
7// Licence: wxWindows licence
8/////////////////////////////////////////////////////////////////////////////
9
10#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
11#pragma implementation "checklst.h"
12#endif
13
14// For compilers that support precompilation, includes "wx.h".
15#include "wx/wxprec.h"
16
17#include "wx/defs.h"
18
19#if wxUSE_CHECKLISTBOX
20
21#include "wx/checklst.h"
22#include "wx/gtk/private.h"
23
24#include <gdk/gdk.h>
25#include <gtk/gtk.h>
26
27//-----------------------------------------------------------------------------
28// wxCheckListBoxBase
29//-----------------------------------------------------------------------------
30
31wxCheckListBoxBase::wxCheckListBoxBase()
32{
33}
34
35//-----------------------------------------------------------------------------
36// wxCheckListBox
37//-----------------------------------------------------------------------------
38
39IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox,wxListBox)
40
41wxCheckListBox::wxCheckListBox() : wxListBox()
42{
43 m_hasCheckBoxes = TRUE;
44}
45
46wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id,
47 const wxPoint& pos,
48 const wxSize& size,
49 int nStrings,
50 const wxString *choices,
51 long style,
52 const wxValidator& validator,
53 const wxString& name )
54{
55 m_hasCheckBoxes = TRUE;
56 wxListBox::Create( parent, id, pos, size, nStrings, choices, style, validator, name );
57}
58
59bool wxCheckListBox::IsChecked( int index ) const
60{
61 wxCHECK_MSG( m_list != NULL, FALSE, wxT("invalid checklistbox") );
62
63 GList *child = g_list_nth( m_list->children, index );
64 if (child)
65 {
66 GtkBin *bin = GTK_BIN( child->data );
67 GtkLabel *label = GTK_LABEL( bin->child );
68
69 wxString str( wxGTK_CONV_BACK( label->label ) );
70
71 return str.GetChar(1) == wxCHECKLBOX_CHECKED;
72 }
73
74 wxFAIL_MSG(wxT("wrong checklistbox index"));
75 return FALSE;
76}
77
78void wxCheckListBox::Check( int index, bool check )
79{
80 wxCHECK_RET( m_list != NULL, wxT("invalid checklistbox") );
81
82 GList *child = g_list_nth( m_list->children, index );
83 if (child)
84 {
85 GtkBin *bin = GTK_BIN( child->data );
86 GtkLabel *label = GTK_LABEL( bin->child );
87
88 wxString str( wxGTK_CONV_BACK( label->label ) );
89
90 if (check == (str.GetChar(1) == wxCHECKLBOX_CHECKED))
91 return;
92
93 str.SetChar( 1, check ? wxCHECKLBOX_CHECKED : wxCHECKLBOX_UNCHECKED );
94
95 gtk_label_set( label, wxGTK_CONV( str ) );
96
97 return;
98 }
99
100 wxFAIL_MSG(wxT("wrong checklistbox index"));
101}
102
103int wxCheckListBox::GetItemHeight() const
104{
105 // FIXME
106 return 22;
107}
108
109#endif