wxDataViewItem wxDataViewIndexListModel::GetItem( unsigned int row ) const
{
+ wxASSERT( row < m_hash.GetCount() );
return wxDataViewItem( m_hash[row] );
}
return false;
}
-wxDataViewItem wxDataViewIndexListModel::GetFirstChild( const wxDataViewItem &parent ) const
+unsigned int wxDataViewIndexListModel::GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const
{
- if (!parent.IsOk())
- {
- if (m_hash.GetCount() == 0)
- return wxDataViewItem(0);
-
- return wxDataViewItem( m_hash[0]);
- }
+ if (item.IsOk())
+ return 0;
- return wxDataViewItem(0);
+ children = m_hash;
+
+ return m_hash.GetCount();
}
-wxDataViewItem wxDataViewIndexListModel::GetNextSibling( const wxDataViewItem &item ) const
-{
- if (!item.IsOk())
- return wxDataViewItem(0);
+//-----------------------------------------------------------------------------
+// wxDataViewIconText
+//-----------------------------------------------------------------------------
- int pos = m_hash.Index( item.GetID() );
- if ((pos == wxNOT_FOUND) || (pos == (int) (m_hash.GetCount()-1)))
- return wxDataViewItem(0);
+IMPLEMENT_DYNAMIC_CLASS(wxDataViewIconText,wxObject)
- return wxDataViewItem( m_hash[pos+1] );
+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;
}
// ---------------------------------------------------------
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;
}
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;
}
// wxDataViewCtrlBase
// ---------------------------------------------------------
-#include "wx/arrimpl.cpp"
-WX_DEFINE_OBJARRAY(wxDataViewItemArray);
-
IMPLEMENT_ABSTRACT_CLASS(wxDataViewCtrlBase, wxControl)
wxDataViewCtrlBase::wxDataViewCtrlBase()
{
m_model = NULL;
- m_cols.DeleteContents( true );
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)
{
m_model->DecRef();
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,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewTextRenderer( wxT("string"), mode, (int)align ),
- model_column, width, align, flags ) );
+ 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,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewIconTextRenderer( wxT("wxDataViewIconText"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
+}
+
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendToggleColumn( const wxString &label, unsigned int model_column,
+ wxDataViewCellMode mode, int width, wxAlignment align, int flags )
+{
+
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewToggleRenderer( wxT("bool"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendProgressColumn( 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,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewProgressRenderer( wxEmptyString, wxT("long"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendDateColumn( 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,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewDateRenderer( wxT("datetime"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendBitmapColumn( const wxString &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,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewBitmapRenderer( wxT("wxBitmap"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendTextColumn( 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,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewTextRenderer( wxT("string"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendToggleColumn( 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,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
+ new wxDataViewIconTextRenderer( wxT("wxDataViewIconText"), mode, (int)align ),
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
+}
+
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendToggleColumn( const wxBitmap &label, unsigned int model_column,
+ wxDataViewCellMode mode, int width, wxAlignment align, int flags )
+{
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewToggleRenderer( wxT("bool"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendProgressColumn( 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,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewProgressRenderer( wxEmptyString, wxT("long"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendDateColumn( const wxBitmap &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendDateColumn( const wxBitmap &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewDateRenderer( wxT("datetime"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendBitmapColumn( const wxBitmap &label, unsigned int model_column,
+wxDataViewColumn *
+wxDataViewCtrlBase::AppendBitmapColumn( const wxBitmap &label, unsigned int model_column,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{
- return AppendColumn( new wxDataViewColumn( label,
+ wxDataViewColumn *ret = new wxDataViewColumn( label,
new wxDataViewBitmapRenderer( wxT("wxBitmap"), mode, (int)align ),
- model_column, width, align, flags ) );
+ model_column, width, align, flags );
+ AppendColumn( ret );
+ return ret;
}
-bool wxDataViewCtrlBase::AppendColumn( wxDataViewColumn *col )
+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();
-}
-
-bool wxDataViewCtrlBase::DeleteColumn( unsigned int WXUNUSED(pos) )
-{
- return false;
-}
-
-bool wxDataViewCtrlBase::ClearColumns()
-{
- return false;
-}
-
-wxDataViewColumn* wxDataViewCtrlBase::GetColumn( unsigned int pos )
-{
- return (wxDataViewColumn*) m_cols[ pos ];
-}
-
// ---------------------------------------------------------
// wxDataViewEvent
// ---------------------------------------------------------
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
+