}
-IMPLEMENT_CLASS(wxDataViewColumn, wxDataViewColumnBase)
-
#include <wx/listimpl.cpp>
WX_DEFINE_LIST(wxDataViewColumnList)
wxDataViewColumn::wxDataViewColumn( const wxString &title, wxDataViewRenderer *cell,
unsigned int model_column, int width,
- wxAlignment align, int flags ) :
- wxDataViewColumnBase( title, cell, model_column, width, align, flags )
+ wxAlignment align, int flags )
+ : wxDataViewColumnBase( cell, model_column )
{
Init( align, flags, width );
wxDataViewColumn::wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *cell,
unsigned int model_column, int width,
- wxAlignment align, int flags ) :
- wxDataViewColumnBase( bitmap, cell, model_column, width, align, flags )
+ wxAlignment align, int flags )
+ : wxDataViewColumnBase( bitmap, cell, model_column )
{
Init( align, flags, width );
{
GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN(m_column);
- gtk_tree_view_column_set_clickable( GTK_TREE_VIEW_COLUMN(m_column),
- sortable );
+ if ( sortable )
+ {
+ gtk_tree_view_column_set_sort_column_id( column, GetModelColumn() );
+ }
+ else
+ {
+ gtk_tree_view_column_set_sort_column_id( column, -1 );
+ gtk_tree_view_column_set_sort_indicator( column, FALSE );
+ gtk_tree_view_column_set_clickable( column, FALSE );
+ }
}
bool wxDataViewColumn::IsSortable() const
return gtk_tree_view_column_get_clickable( column );
}
-void wxDataViewColumn::SetAsSortKey( bool sort )
+void wxDataViewColumn::SetAsSortKey( bool WXUNUSED(sort) )
{
- GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN(m_column);
-
- if (sort)
- {
- gtk_tree_view_column_set_sort_column_id( column, GetModelColumn() );
- }
- else
- {
- gtk_tree_view_column_set_sort_column_id( column, -1 );
- gtk_tree_view_column_set_sort_indicator( column, FALSE );
- }
+ // it might not make sense to have this function in wxHeaderColumn at
+ // all in fact, changing of the sort order should only be done using the
+ // associated control API
+ wxFAIL_MSG( "not implemented" );
}
bool wxDataViewColumn::IsSortKey() const
{
GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN(m_column);
- return (gtk_tree_view_column_get_sort_column_id( column ) != -1);
+ return gtk_tree_view_column_get_sort_indicator( column );
}
bool wxDataViewColumn::IsResizeable() const
gtk_tree_path_free( path );
}
+bool wxDataViewCtrl::IsExpanded( const wxDataViewItem & item ) const
+{
+ GtkTreeIter iter;
+ iter.user_data = item.GetID();
+ GtkTreePath *path = m_internal->get_path( &iter );
+ bool res = gtk_tree_view_row_expanded( GTK_TREE_VIEW(m_treeview), path );
+ gtk_tree_path_free( path );
+
+ return res;
+}
+
wxDataViewItem wxDataViewCtrl::GetSelection() const
{
GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) );
gtk_tree_selection_unselect_all( selection );
+ wxDataViewItem last_parent;
+
size_t i;
for (i = 0; i < sel.GetCount(); i++)
{
+ wxDataViewItem item = sel[i];
+ wxDataViewItem parent = GetModel()->GetParent( item );
+ if (parent)
+ {
+ if (parent != last_parent)
+ ExpandAncestors(item);
+ }
+ last_parent = parent;
+
GtkTreeIter iter;
iter.stamp = m_internal->GetGtkModel()->stamp;
- iter.user_data = (gpointer) sel[i].GetID();
+ iter.user_data = (gpointer) item.GetID();
gtk_tree_selection_select_iter( selection, &iter );
}
void wxDataViewCtrl::Select( const wxDataViewItem & item )
{
+ ExpandAncestors(item);
+
GtkDisableSelectionEvents();
GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) );
void wxDataViewCtrl::EnsureVisible(const wxDataViewItem& item,
const wxDataViewColumn *WXUNUSED(column))
{
+ ExpandAncestors(item);
+
GtkTreeIter iter;
iter.user_data = (gpointer) item.GetID();
GtkTreePath *path = m_internal->get_path( &iter );