X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4a46cbe8c69e57a1837167097084867331ba4d7e..8a31648287be0ef976f133de2786b137f1e98340:/src/gtk/checklst.cpp diff --git a/src/gtk/checklst.cpp b/src/gtk/checklst.cpp index 3317f05549..a75aebf608 100644 --- a/src/gtk/checklst.cpp +++ b/src/gtk/checklst.cpp @@ -1,8 +1,8 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp +// Name: src/gtk/checklst.cpp // Purpose: // Author: Robert Roebling -// Modified by: Ryan Norton (Native GTK2.0+ checklist) +// Modified by: Ryan Norton (Native GTK2.0+ checklist) // Id: $Id$ // Copyright: (c) 1998 Robert Roebling // Licence: wxWindows licence @@ -11,8 +11,6 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#include "wx/defs.h" - #if wxUSE_CHECKLISTBOX #include "wx/checklst.h" @@ -25,35 +23,32 @@ //----------------------------------------------------------------------------- // "toggled" //----------------------------------------------------------------------------- -#if wxUSE_NATIVEGTKCHECKLIST extern "C" { -static void gtk_checklist_toggled(GtkCellRendererToggle *renderer, +static void gtk_checklist_toggled(GtkCellRendererToggle * WXUNUSED(renderer), gchar *stringpath, wxCheckListBox *listbox) { wxCHECK_RET( listbox->m_treeview != NULL, wxT("invalid listbox") ); GtkTreePath* path = gtk_tree_path_new_from_string(stringpath); - wxCommandEvent new_event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, + wxCommandEvent new_event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, listbox->GetId() ); new_event.SetEventObject( listbox ); new_event.SetInt( gtk_tree_path_get_indices(path)[0] ); + new_event.SetString( listbox->GetString( new_event.GetInt() )); gtk_tree_path_free(path); listbox->Check( new_event.GetInt(), !listbox->IsChecked(new_event.GetInt())); - listbox->GetEventHandler()->ProcessEvent( new_event ); + listbox->HandleWindowEvent( new_event ); } } -#endif //----------------------------------------------------------------------------- // wxCheckListBox //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox,wxListBox) - wxCheckListBox::wxCheckListBox() : wxListBox() { - m_hasCheckBoxes = TRUE; + m_hasCheckBoxes = true; } wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, @@ -65,7 +60,7 @@ wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, const wxValidator& validator, const wxString& name ) { - m_hasCheckBoxes = TRUE; + m_hasCheckBoxes = true; wxListBox::Create( parent, id, pos, size, nStrings, choices, style, validator, name ); } @@ -77,22 +72,26 @@ wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, const wxValidator& validator, const wxString& name ) { - m_hasCheckBoxes = TRUE; + m_hasCheckBoxes = true; wxListBox::Create( parent, id, pos, size, choices, style, validator, name ); } -#if wxUSE_NATIVEGTKCHECKLIST void wxCheckListBox::DoCreateCheckList() { //Create the checklist in our treeview and set up events for it - GtkCellRenderer* renderer = + GtkCellRenderer* renderer = gtk_cell_renderer_toggle_new(); - GtkTreeViewColumn* column = + GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes( "", renderer, "active", 0, NULL ); - gtk_tree_view_column_set_fixed_width(column, 20); +#if wxUSE_LIBHILDON2 + gtk_tree_view_column_set_fixed_width(column, 40); +#else + gtk_tree_view_column_set_fixed_width(column, 22); +#endif // wxUSE_LIBHILDON2/!wxUSE_LIBHILDON2 + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_clickable(column, TRUE); @@ -103,16 +102,16 @@ void wxCheckListBox::DoCreateCheckList() gtk_tree_view_append_column(m_treeview, column); } -bool wxCheckListBox::IsChecked( int index ) const +bool wxCheckListBox::IsChecked(unsigned int index) const { - wxCHECK_MSG( m_treeview != NULL, FALSE, wxT("invalid checklistbox") ); + wxCHECK_MSG( m_treeview != NULL, false, wxT("invalid checklistbox") ); GtkTreeIter iter; gboolean res = gtk_tree_model_iter_nth_child( GTK_TREE_MODEL(m_liststore), &iter, NULL, //NULL = parent = get first index - ); + ); if(!res) return false; @@ -120,12 +119,12 @@ bool wxCheckListBox::IsChecked( int index ) const gtk_tree_model_get_value(GTK_TREE_MODEL(m_liststore), &iter, 0, //column - &value); + &value); return g_value_get_boolean(&value) == TRUE ? true : false; } -void wxCheckListBox::Check( int index, bool check ) +void wxCheckListBox::Check(unsigned int index, bool check) { wxCHECK_RET( m_treeview != NULL, wxT("invalid checklistbox") ); @@ -134,14 +133,14 @@ void wxCheckListBox::Check( int index, bool check ) GTK_TREE_MODEL(m_liststore), &iter, NULL, //NULL = parent = get first index - ); + ); if(!res) return; gtk_list_store_set(m_liststore, &iter, 0, //column - check ? TRUE : FALSE, -1); + check ? TRUE : FALSE, -1); } int wxCheckListBox::GetItemHeight() const @@ -156,52 +155,4 @@ int wxCheckListBox::GetItemHeight() const return height; } -#else //NON-NATIVE - -bool wxCheckListBox::IsChecked( int index ) const -{ - wxCHECK_MSG( m_treeview != NULL, FALSE, wxT("invalid checklistbox") ); - - GtkTreeEntry* entry = GtkGetEntry(index); - if (entry) - { - wxString str( wxGTK_CONV_BACK( gtk_tree_entry_get_label(entry) ) ); - - return str.GetChar(1) == wxCHECKLBOX_CHECKED; - } - - wxFAIL_MSG(wxT("wrong checklistbox index")); - return FALSE; -} - -void wxCheckListBox::Check( int index, bool check ) -{ - wxCHECK_RET( m_treeview != NULL, wxT("invalid checklistbox") ); - - GtkTreeEntry* entry = GtkGetEntry(index); - if (entry) - { - wxString str( wxGTK_CONV_BACK( gtk_tree_entry_get_label(entry) ) ); - - if (check == (str.GetChar(1) == wxCHECKLBOX_CHECKED)) - return; - - str.SetChar( 1, check ? wxCHECKLBOX_CHECKED : wxCHECKLBOX_UNCHECKED ); - - gtk_tree_entry_set_label( entry, wxGTK_CONV( str ) ); - - return; - } - - wxFAIL_MSG(wxT("wrong checklistbox index")); -} - -int wxCheckListBox::GetItemHeight() const -{ - // FIXME - return 22; -} - -#endif //wxUSE_NATIVEGTKCHECKLIST - #endif //wxUSE_CHECKLISTBOX