#include "wx/textctrl.h"
#include "wx/headercol.h"
#include "wx/variant.h"
+#include "wx/dnd.h" // For wxDragResult declaration only.
#include "wx/dynarray.h"
#include "wx/icon.h"
#include "wx/itemid.h"
return true;
}
- // define hierachy
+ // define hierarchy
virtual wxDataViewItem GetParent( const wxDataViewItem &item ) const = 0;
virtual bool IsContainer( const wxDataViewItem &item ) const = 0;
// Is the container just a header or an item with all columns
virtual unsigned GetRow( const wxDataViewItem &item ) const;
wxDataViewItem GetItem( unsigned int row ) const;
- // compare based on index
-
- virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2,
- unsigned int column, bool ascending ) const;
- virtual bool HasDefaultCompare() const;
-
// implement base methods
virtual unsigned int GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const;
wxDataViewItem GetCurrentItem() const;
void SetCurrentItem(const wxDataViewItem& item);
+ // Currently focused column of the current item or NULL if no column has focus
+ virtual wxDataViewColumn *GetCurrentColumn() const = 0;
+
// Selection: both GetSelection() and GetSelections() can be used for the
// controls both with and without wxDV_MULTIPLE style. For single selection
// controls GetSelections() is not very useful however. And for multi
virtual bool SetRowHeight( int WXUNUSED(rowHeight) ) { return false; }
- virtual void StartEditor( const wxDataViewItem & WXUNUSED(item),
- unsigned int WXUNUSED(column) )
- { }
+ virtual void EditItem(const wxDataViewItem& item, const wxDataViewColumn *column) = 0;
+
+ // Use EditItem() instead
+ wxDEPRECATED( void StartEditor(const wxDataViewItem& item, unsigned int column) );
#if wxUSE_DRAG_AND_DROP
virtual bool EnableDragSource(const wxDataFormat& WXUNUSED(format))
#if wxUSE_DRAG_AND_DROP
, m_dataObject(NULL),
m_dataBuffer(NULL),
- m_dataSize(0)
+ m_dataSize(0),
+ m_dragFlags(0),
+ m_dropEffect(wxDragNone)
#endif
{ }
, m_dataObject(event.m_dataObject),
m_dataFormat(event.m_dataFormat),
m_dataBuffer(event.m_dataBuffer),
- m_dataSize(event.m_dataSize)
+ m_dataSize(event.m_dataSize),
+ m_dragFlags(event.m_dragFlags),
+ m_dropEffect(event.m_dropEffect)
#endif
{ }
size_t GetDataSize() const { return m_dataSize; }
void SetDataBuffer( void* buf ) { m_dataBuffer = buf;}
void *GetDataBuffer() const { return m_dataBuffer; }
+ void SetDragFlags( int flags ) { m_dragFlags = flags; }
+ int GetDragFlags() const { return m_dragFlags; }
+ void SetDropEffect( wxDragResult effect ) { m_dropEffect = effect; }
+ wxDragResult GetDropEffect() const { return m_dropEffect; }
#endif // wxUSE_DRAG_AND_DROP
virtual wxEvent *Clone() const { return new wxDataViewEvent(*this); }
wxDataFormat m_dataFormat;
void* m_dataBuffer;
size_t m_dataSize;
+
+ int m_dragFlags;
+ wxDragResult m_dropEffect;
#endif // wxUSE_DRAG_AND_DROP
private:
class WXDLLIMPEXP_ADV wxDataViewListStoreLine
{
public:
- wxDataViewListStoreLine( wxClientData *data = NULL )
+ wxDataViewListStoreLine( wxUIntPtr data = NULL )
{
m_data = data;
}
- virtual ~wxDataViewListStoreLine()
- {
- delete m_data;
- }
- void SetData( wxClientData *data )
- { if (m_data) delete m_data; m_data = data; }
- wxClientData *GetData() const
+ void SetData( wxUIntPtr data )
+ { m_data = data; }
+ wxUIntPtr GetData() const
{ return m_data; }
wxVector<wxVariant> m_values;
private:
- wxClientData *m_data;
+ wxUIntPtr m_data;
};
void InsertColumn( unsigned int pos, const wxString &varianttype );
void AppendColumn( const wxString &varianttype );
- void AppendItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
- void PrependItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
- void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxClientData *data = NULL );
+ void AppendItem( const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
+ void PrependItem( const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
+ void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
void DeleteItem( unsigned int pos );
void DeleteAllItems();
+ unsigned int GetItemCount() const;
+
+ void SetItemData( const wxDataViewItem& item, wxUIntPtr data );
+ wxUIntPtr GetItemData( const wxDataViewItem& item ) const;
+
// override base virtuals
virtual unsigned int GetColumnCount() const;
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE );
- void AppendItem( const wxVector<wxVariant> &values, wxClientData *data = NULL )
+ void AppendItem( const wxVector<wxVariant> &values, wxUIntPtr data = NULL )
{ GetStore()->AppendItem( values, data ); }
- void PrependItem( const wxVector<wxVariant> &values, wxClientData *data = NULL )
+ void PrependItem( const wxVector<wxVariant> &values, wxUIntPtr data = NULL )
{ GetStore()->PrependItem( values, data ); }
- void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxClientData *data = NULL )
+ void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxUIntPtr data = NULL )
{ GetStore()->InsertItem( row, values, data ); }
void DeleteItem( unsigned row )
{ GetStore()->DeleteItem( row ); }
bool GetToggleValue( unsigned int row, unsigned int col ) const
{ wxVariant value; GetStore()->GetValueByRow( value, row, col ); return value.GetBool(); }
+ void SetItemData( const wxDataViewItem& item, wxUIntPtr data )
+ { GetStore()->SetItemData( item, data ); }
+ wxUIntPtr GetItemData( const wxDataViewItem& item ) const
+ { return GetStore()->GetItemData( item ); }
+
+ int GetItemCount() const
+ { return GetStore()->GetItemCount(); }
+
void OnSize( wxSizeEvent &event );
private: