// wxDataViewModel
// ---------------------------------------------------------
+#include <wx/listimpl.cpp>
+WX_DEFINE_LIST(wxDataViewModelNotifiers);
+
wxDataViewModel::wxDataViewModel()
{
m_notifiers.DeleteContents( true );
- m_sortingColumn = 0;
- m_ascending = true;
}
bool wxDataViewModel::ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item )
{
bool ret = true;
- wxList::compatibility_iterator node = m_notifiers.GetFirst();
- while (node)
+ wxDataViewModelNotifiers::iterator iter;
+ for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
{
- wxDataViewModelNotifier* notifier = (wxDataViewModelNotifier*) node->GetData();
+ wxDataViewModelNotifier* notifier = *iter;
if (!notifier->ItemAdded( parent, item ))
ret = false;
- node = node->GetNext();
}
return ret;
}
-bool wxDataViewModel::ItemDeleted( const wxDataViewItem &item )
+bool wxDataViewModel::ItemDeleted( const wxDataViewItem &parent, const wxDataViewItem &item )
{
bool ret = true;
- wxList::compatibility_iterator node = m_notifiers.GetFirst();
- while (node)
+ wxDataViewModelNotifiers::iterator iter;
+ for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
{
- wxDataViewModelNotifier* notifier = (wxDataViewModelNotifier*) node->GetData();
- if (!notifier->ItemDeleted( item ))
+ wxDataViewModelNotifier* notifier = *iter;
+ if (!notifier->ItemDeleted( parent, item ))
ret = false;
- node = node->GetNext();
}
return ret;
{
bool ret = true;
- wxList::compatibility_iterator node = m_notifiers.GetFirst();
- while (node)
+ wxDataViewModelNotifiers::iterator iter;
+ for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
{
- wxDataViewModelNotifier* notifier = (wxDataViewModelNotifier*) node->GetData();
+ wxDataViewModelNotifier* notifier = *iter;
if (!notifier->ItemChanged( item ))
ret = false;
- node = node->GetNext();
}
return ret;
{
bool ret = true;
- wxList::compatibility_iterator node = m_notifiers.GetFirst();
- while (node)
+ wxDataViewModelNotifiers::iterator iter;
+ for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
{
- wxDataViewModelNotifier* notifier = (wxDataViewModelNotifier*) node->GetData();
+ wxDataViewModelNotifier* notifier = *iter;
if (!notifier->ValueChanged( item, col ))
ret = false;
- node = node->GetNext();
}
return ret;
{
bool ret = true;
- wxList::compatibility_iterator node = m_notifiers.GetFirst();
- while (node)
+ wxDataViewModelNotifiers::iterator iter;
+ for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
{
- wxDataViewModelNotifier* notifier = (wxDataViewModelNotifier*) node->GetData();
+ wxDataViewModelNotifier* notifier = *iter;
if (!notifier->Cleared())
ret = false;
- node = node->GetNext();
}
return ret;
void wxDataViewModel::Resort()
{
- wxList::compatibility_iterator node = m_notifiers.GetFirst();
- while (node)
+ wxDataViewModelNotifiers::iterator iter;
+ for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
{
- wxDataViewModelNotifier* notifier = (wxDataViewModelNotifier*) node->GetData();
+ wxDataViewModelNotifier* notifier = *iter;
notifier->Resort();
- node = node->GetNext();
}
}
void wxDataViewModel::AddNotifier( wxDataViewModelNotifier *notifier )
{
- m_notifiers.Append( notifier );
+ m_notifiers.push_back( notifier );
notifier->SetOwner( this );
}
m_notifiers.DeleteObject( notifier );
}
-int wxDataViewModel::Compare( const wxDataViewItem &item1, const wxDataViewItem &item2 )
+int wxDataViewModel::Compare( const wxDataViewItem &item1, const wxDataViewItem &item2,
+ unsigned int column, bool ascending )
{
+ // sort branches before leaves
+ bool item1_is_container = IsContainer(item1);
+ bool item2_is_container = IsContainer(item2);
+
+ if (item1_is_container && !item2_is_container)
+ return 1;
+ if (item2_is_container && !item1_is_container)
+ return -1;
+
wxVariant value1,value2;
- GetValue( value1, item1, m_sortingColumn );
- GetValue( value2, item2, m_sortingColumn );
-
- if (!m_ascending)
+ GetValue( value1, item1, column );
+ GetValue( value2, item2, column );
+
+ if (!ascending)
{
wxVariant temp = value1;
value1 = value2;
value2 = temp;
}
-
+
if (value1.GetType() == wxT("string"))
{
wxString str1 = value1.GetString();
wxString str2 = value2.GetString();
- return str1.Cmp( str2 );
- }
+ int res = str1.Cmp( str2 );
+ if (res) return res;
+ } else
if (value1.GetType() == wxT("long"))
{
long l1 = value1.GetLong();
long l2 = value2.GetLong();
- return l1-l2;
- }
+ long res = l1-l2;
+ if (res) return res;
+ } else
if (value1.GetType() == wxT("double"))
{
double d1 = value1.GetDouble();
double d2 = value2.GetDouble();
- if (d1 == d2) return 0;
if (d1 < d2) return 1;
- return -1;
- }
+ if (d1 > d2) return -1;
+ } else
if (value1.GetType() == wxT("datetime"))
{
wxDateTime dt1 = value1.GetDateTime();
wxDateTime dt2 = value2.GetDateTime();
- if (dt1.IsEqualTo(dt2)) return 0;
if (dt1.IsEarlierThan(dt2)) return 1;
- return -1;
+ if (dt2.IsEarlierThan(dt1)) return -11;
}
- return 0;
+ // items must be different
+ unsigned long litem1 = (unsigned long) item1.GetID();
+ unsigned long litem2 = (unsigned long) item2.GetID();
+
+ if (!ascending)
+ return litem2-litem2;
+
+ return litem1-litem2;
+}
+
+// ---------------------------------------------------------
+// wxDataViewIndexListModel
+// ---------------------------------------------------------
+
+wxDataViewIndexListModel::wxDataViewIndexListModel( unsigned int initial_size )
+{
+ // build initial index
+ unsigned int i;
+ for (i = 1; i < initial_size+1; i++)
+ m_hash.Add( (void*) i );
+ m_lastIndex = initial_size + 1;
+}
+
+wxDataViewIndexListModel::~wxDataViewIndexListModel()
+{
+}
+
+void wxDataViewIndexListModel::RowPrepended()
+{
+ unsigned int id = m_lastIndex++;
+ m_hash.Insert( (void*) id, 0 );
+ wxDataViewItem item( (void*) id );
+ ItemAdded( wxDataViewItem(0), item );
+}
+
+void wxDataViewIndexListModel::RowInserted( unsigned int before )
+{
+ unsigned int id = m_lastIndex++;
+ m_hash.Insert( (void*) id, before );
+ wxDataViewItem item( (void*) id );
+ ItemAdded( wxDataViewItem(0), item );
+}
+
+void wxDataViewIndexListModel::RowAppended()
+{
+ unsigned int id = m_lastIndex++;
+ m_hash.Add( (void*) id );
+ wxDataViewItem item( (void*) id );
+ ItemAdded( wxDataViewItem(0), item );
+}
+
+void wxDataViewIndexListModel::RowDeleted( unsigned int row )
+{
+ wxDataViewItem item( m_hash[row] );
+ wxDataViewModel::ItemDeleted( wxDataViewItem(0), item );
+ m_hash.RemoveAt( row );
+}
+
+void wxDataViewIndexListModel::RowChanged( unsigned int row )
+{
+ wxDataViewModel::ItemChanged( GetItem(row) );
+}
+
+void wxDataViewIndexListModel::RowValueChanged( unsigned int row, unsigned int col )
+{
+ wxDataViewModel::ValueChanged( GetItem(row), col );
+}
+
+unsigned int wxDataViewIndexListModel::GetRow( const wxDataViewItem &item ) const
+{
+ // assert for not found
+ return (unsigned int) m_hash.Index( item.GetID() );
+}
+
+wxDataViewItem wxDataViewIndexListModel::GetItem( unsigned int row ) const
+{
+ wxASSERT( row < m_hash.GetCount() );
+ return wxDataViewItem( m_hash[row] );
+}
+
+int wxDataViewIndexListModel::Compare( const wxDataViewItem &item1, const wxDataViewItem &item2,
+ unsigned int column, bool ascending )
+{
+ if (ascending)
+ return GetRow(item1) - GetRow(item2);
+
+ return GetRow(item2) - GetRow(item1);
+}
+
+void wxDataViewIndexListModel::GetValue( wxVariant &variant,
+ const wxDataViewItem &item, unsigned int col ) const
+{
+ GetValue( variant, GetRow(item), col );
+}
+
+bool wxDataViewIndexListModel::SetValue( const wxVariant &variant,
+ const wxDataViewItem &item, unsigned int col )
+{
+ return SetValue( variant, GetRow(item), col );
+}
+
+wxDataViewItem wxDataViewIndexListModel::GetParent( const wxDataViewItem & WXUNUSED(item) ) const
+{
+ return wxDataViewItem(0);
+}
+
+bool wxDataViewIndexListModel::IsContainer( const wxDataViewItem &item ) const
+{
+ // only the invisible root item has children
+ if (!item.IsOk())
+ return true;
+
+ return false;
+}
+
+unsigned int wxDataViewIndexListModel::GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const
+{
+ if (item.IsOk())
+ return 0;
+
+ children = m_hash;
+
+ return m_hash.GetCount();
+}
+
+//-----------------------------------------------------------------------------
+// wxDataViewIconText
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxDataViewIconText,wxObject)
+
+IMPLEMENT_VARIANT_OBJECT(wxDataViewIconText)
+
+bool operator == (const wxDataViewIconText &one, const wxDataViewIconText &two)
+{
+ if (one.GetText() != two.GetText()) return false;
+ if (one.IsSameAs(two)) return false;
+ return true;
}
// ---------------------------------------------------------
IMPLEMENT_ABSTRACT_CLASS(wxDataViewRendererBase, wxObject)
-wxDataViewRendererBase::wxDataViewRendererBase( const wxString &varianttype,
+wxDataViewRendererBase::wxDataViewRendererBase( const wxString &varianttype,
wxDataViewCellMode WXUNUSED(mode),
int WXUNUSED(align) )
{
bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect labelRect )
{
m_item = item; // remember for later
-
+
unsigned int col = GetOwner()->GetModelColumn();
wxVariant value;
GetOwner()->GetOwner()->GetModel()->GetValue( value, item, col );
-
+
m_editorCtrl = CreateEditorCtrl( GetOwner()->GetOwner()->GetMainWindow(), labelRect, value );
-
- wxDataViewEditorCtrlEvtHandler *handler =
+
+ wxDataViewEditorCtrlEvtHandler *handler =
new wxDataViewEditorCtrlEvtHandler( m_editorCtrl, (wxDataViewRenderer*) this );
-
+
m_editorCtrl->PushEventHandler( handler );
-
+
#if defined(__WXGTK20__) && !defined(wxUSE_GENERICDATAVIEWCTRL)
handler->SetFocusOnIdle();
#else
m_editorCtrl->SetFocus();
#endif
+ // Now we should send Editing Started event
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, GetOwner()->GetOwner()->GetId() );
+ event.SetDataViewColumn( GetOwner() );
+ event.SetModel( GetOwner()->GetOwner()->GetModel() );
+ event.SetItem( item );
+ GetOwner()->GetOwner()->GetEventHandler()->ProcessEvent( event );
+
return true;
}
void wxDataViewRendererBase::CancelEditing()
{
wxPendingDelete.Append( m_editorCtrl );
-
+
GetOwner()->GetOwner()->GetMainWindow()->SetFocus();
-
+
// m_editorCtrl->PopEventHandler( true );
}
GetValueFromEditorCtrl( m_editorCtrl, value );
wxPendingDelete.Append( m_editorCtrl );
-
+
GetOwner()->GetOwner()->GetMainWindow()->SetFocus();
-
+
if (!Validate(value))
return false;
-
+
unsigned int col = GetOwner()->GetModelColumn();
GetOwner()->GetOwner()->GetModel()->SetValue( value, m_item, col );
GetOwner()->GetOwner()->GetModel()->ValueChanged( m_item, col );
-
+
// m_editorCtrl->PopEventHandler( true );
+ // Now we should send Editing Done event
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, GetOwner()->GetOwner()->GetId() );
+ event.SetDataViewColumn( GetOwner() );
+ event.SetModel( GetOwner()->GetOwner()->GetModel() );
+ event.SetItem( m_item );
+ GetOwner()->GetOwner()->GetEventHandler()->ProcessEvent( event );
+
return true;
}
if (wxWindow::FindFocus() != m_editorCtrl)
m_editorCtrl->SetFocus();
}
-
+
event.Skip();
}
unsigned int model_column,
int WXUNUSED(width),
wxAlignment WXUNUSED(align),
- int WXUNUSED(flags))
+ int WXUNUSED(flags))
{
m_renderer = renderer;
m_model_column = model_column;
unsigned int model_column,
int WXUNUSED(width),
wxAlignment WXUNUSED(align),
- int WXUNUSED(flags) )
+ int WXUNUSED(flags) )
{
m_renderer = renderer;
m_model_column = model_column;
SetHidden((flags & wxDATAVIEW_COL_HIDDEN) != 0);
}
-// ---------------------------------------------------------
-// wxDataViewEventModelNotifier
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewEventModelNotifier: public wxDataViewModelNotifier
-{
-public:
- wxDataViewEventModelNotifier( wxDataViewCtrl *ctrl ) { m_ctrl = ctrl; }
-
- bool SendEvent( wxEventType event_type, const wxDataViewItem &item, unsigned int col = 0 )
- {
- wxDataViewEvent event( event_type, m_ctrl->GetId() );
- event.SetEventObject( m_ctrl );
- event.SetModel( m_ctrl->GetModel() );
- event.SetItem( item );
- event.SetColumn( col );
- m_ctrl->GetEventHandler()->ProcessEvent( event );
- return true;
- }
-
- virtual bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item )
- { return SendEvent( wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_ADDED, item ); }
- virtual bool ItemDeleted( const wxDataViewItem &item )
- { return SendEvent( wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_DELETED, item ); }
- virtual bool ItemChanged( const wxDataViewItem &item )
- { return SendEvent( wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_CHANGED, item ); }
- virtual bool ValueChanged( const wxDataViewItem &item, unsigned int col )
- { return SendEvent( wxEVT_COMMAND_DATAVIEW_MODEL_VALUE_CHANGED, item, col ); }
- virtual bool Cleared()
- { return SendEvent( wxEVT_COMMAND_DATAVIEW_MODEL_CLEARED, wxDataViewItem(0) ); }
-
-private:
- wxDataViewCtrl *m_ctrl;
-};
-
-
// ---------------------------------------------------------
// wxDataViewCtrlBase
// ---------------------------------------------------------
wxDataViewCtrlBase::wxDataViewCtrlBase()
{
m_model = NULL;
- m_cols.DeleteContents( true );
- m_eventNotifier = NULL;
m_expander_column = 0;
m_indent = 8;
}
wxDataViewCtrlBase::~wxDataViewCtrlBase()
{
- // IMPORTANT: before calling DecRef() on our model (since it may
- // result in a free() call), erase all columns (since
- // they hold a pointer to our model)
- m_cols.Clear();
-
if (m_model)
{
- if (m_eventNotifier)
- m_model->RemoveNotifier( m_eventNotifier );
- m_eventNotifier = NULL;
-
m_model->DecRef();
m_model = NULL;
}
{
if (m_model)
{
- if (m_eventNotifier)
- m_model->RemoveNotifier( m_eventNotifier );
- m_eventNotifier = NULL;
-
m_model->DecRef(); // discard old model, if any
}
m_model = model;
if (m_model)
{
- m_model->IncRef();
- m_eventNotifier = new wxDataViewEventModelNotifier( (wxDataViewCtrl*) this );
- m_model->AddNotifier( m_eventNotifier );
+ m_model->IncRef();
}
return true;
return m_model;
}
-bool wxDataViewCtrlBase::AppendTextColumn( const wxString &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendTextColumn( const wxString &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewTextRenderer( wxT("string"), mode, (int)align ),
- model_column, width, align, flags ) );
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewTextRenderer( wxT("string"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendToggleColumn( const wxString &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendIconTextColumn( const wxString &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewToggleRenderer( wxT("bool"), mode, (int)align ),
- model_column, width, align, flags ) );
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewIconTextRenderer( wxT("wxDataViewIconText"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendProgressColumn( const wxString &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendToggleColumn( const wxString &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewProgressRenderer( wxEmptyString, wxT("long"), mode, (int)align ),
- model_column, width, align, flags ) );
+
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewToggleRenderer( wxT("bool"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendDateColumn( const wxString &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendProgressColumn( const wxString &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewDateRenderer( wxT("datetime"), mode, (int)align ),
- model_column, width, align, flags ) );
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewProgressRenderer( wxEmptyString, wxT("long"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendBitmapColumn( const wxString &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendDateColumn( const wxString &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewBitmapRenderer( wxT("wxBitmap"), mode, (int)align ),
- model_column, width, align, flags ) );
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewDateRenderer( wxT("datetime"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendTextColumn( const wxBitmap &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendBitmapColumn( const wxString &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewTextRenderer( wxT("string"), mode, (int)align ),
- model_column, width, align, flags ) );
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewBitmapRenderer( wxT("wxBitmap"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendToggleColumn( const wxBitmap &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendTextColumn( const wxBitmap &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewToggleRenderer( wxT("bool"), mode, (int)align ),
- model_column, width, align, flags ) );
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewTextRenderer( wxT("string"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendProgressColumn( const wxBitmap &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendIconTextColumn( const wxBitmap &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewProgressRenderer( wxEmptyString, wxT("long"), mode, (int)align ),
- model_column, width, align, flags ) );
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewIconTextRenderer( wxT("wxDataViewIconText"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendDateColumn( const wxBitmap &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendToggleColumn( const wxBitmap &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewDateRenderer( wxT("datetime"), mode, (int)align ),
- model_column, width, align, flags ) );
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewToggleRenderer( wxT("bool"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendBitmapColumn( const wxBitmap &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendProgressColumn( const wxBitmap &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
- new wxDataViewBitmapRenderer( wxT("wxBitmap"), mode, (int)align ),
- model_column, width, align, flags ) );
-}
-
-bool wxDataViewCtrlBase::AppendColumn( wxDataViewColumn *col )
-{
- m_cols.Append( (wxObject*) col );
- col->SetOwner( (wxDataViewCtrl*) this );
- return true;
-}
-
-unsigned int wxDataViewCtrlBase::GetColumnCount() const
-{
- return m_cols.GetCount();
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewProgressRenderer( wxEmptyString, wxT("long"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::DeleteColumn( unsigned int WXUNUSED(pos) )
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendDateColumn( const wxBitmap &label, unsigned int model_column,
+ wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return false;
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewDateRenderer( wxT("datetime"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::ClearColumns()
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendBitmapColumn( const wxBitmap &label, unsigned int model_column,
+ wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return false;
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewBitmapRenderer( wxT("wxBitmap"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-wxDataViewColumn* wxDataViewCtrlBase::GetColumn( unsigned int pos )
+bool
+wxDataViewCtrlBase::AppendColumn( wxDataViewColumn *col )
{
- return (wxDataViewColumn*) m_cols[ pos ];
+ col->SetOwner( (wxDataViewCtrl*) this );
+ return true;
}
// ---------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxDataViewEvent,wxNotifyEvent)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_SELECTED)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_DESELECTED)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE)
+
DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_MODEL_CLEARED)
#endif
+