X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bbe0af5b15f8b8e95ed45abc2140fb3a1fac3c87..3225a4b8b8656f25dac6cb20684a3c2c273cf796:/src/gtk1/checklst.cpp diff --git a/src/gtk1/checklst.cpp b/src/gtk1/checklst.cpp index 82fb96dc1a..bb84a1816d 100644 --- a/src/gtk1/checklst.cpp +++ b/src/gtk1/checklst.cpp @@ -1,93 +1,106 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp +// Name: src/gtk1/checklst.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ // Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "checklst.h" -#endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#if wxUSE_CHECKLISTBOX #include "wx/checklst.h" +#include "wx/gtk1/private.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" +#include +#include //----------------------------------------------------------------------------- // wxCheckListBox //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox,wxListBox) - -wxCheckListBox::wxCheckListBox() : - wxListBox() +wxCheckListBox::wxCheckListBox() : wxListBox() { - m_hasCheckBoxes = TRUE; + m_hasCheckBoxes = true; } wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int nStrings, - const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name ) + const wxPoint& pos, + const wxSize& size, + int nStrings, + const wxString *choices, + long style, + const wxValidator& validator, + const wxString& name ) { - m_hasCheckBoxes = TRUE; + m_hasCheckBoxes = true; wxListBox::Create( parent, id, pos, size, nStrings, choices, style, validator, name ); } -bool wxCheckListBox::IsChecked( int index ) const +wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, + const wxPoint& pos, + const wxSize& size, + const wxArrayString& choices, + long style, + const wxValidator& validator, + const wxString& name ) +{ + m_hasCheckBoxes = true; + wxListBox::Create( parent, id, pos, size, choices, + style, validator, name ); +} + +bool wxCheckListBox::IsChecked(unsigned int index) const { - wxCHECK_MSG( m_list != NULL, FALSE, "invalid checklistbox" ); - + wxCHECK_MSG( m_list != NULL, false, wxT("invalid checklistbox") ); + GList *child = g_list_nth( m_list->children, index ); if (child) { GtkBin *bin = GTK_BIN( child->data ); GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - - return (str[1] == 'X'); + + wxString str( wxGTK_CONV_BACK( label->label ) ); + + return str.GetChar(1) == wxCHECKLBOX_CHECKED; } - - wxFAIL_MSG("wrong checklistbox index"); - return FALSE; + + wxFAIL_MSG(wxT("wrong checklistbox index")); + return false; } -void wxCheckListBox::Check( int index, bool check ) +void wxCheckListBox::Check(unsigned int index, bool check ) { - wxCHECK_RET( m_list != NULL, "invalid checklistbox" ); - + wxCHECK_RET( m_list != NULL, wxT("invalid checklistbox") ); + GList *child = g_list_nth( m_list->children, index ); if (child) { GtkBin *bin = GTK_BIN( child->data ); GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - - if (check == (str[1] == 'X')) return; - - if (check) - str.SetChar( 1, 'X' ); - else - str.SetChar( 1, '-' ); - - gtk_label_set( label, str ); - - return; + + wxString str( wxGTK_CONV_BACK( label->label ) ); + + if (check == (str.GetChar(1) == wxCHECKLBOX_CHECKED)) + return; + + str.SetChar( 1, check ? wxCHECKLBOX_CHECKED : wxCHECKLBOX_UNCHECKED ); + + gtk_label_set( label, wxGTK_CONV( str ) ); + + return; } - - wxFAIL_MSG("wrong checklistbox index"); + + wxFAIL_MSG(wxT("wrong checklistbox index")); } -int wxCheckListBox::GetItemHeight() +int wxCheckListBox::GetItemHeight() const { + // FIXME return 22; } + +#endif