{
public:
wxDataViewListModelNotifier() { }
- virtual ~wxDataViewListModelNotifier() { }
+ virtual ~wxDataViewListModelNotifier() { m_owner = NULL; }
virtual bool RowAppended() = 0;
virtual bool RowPrepended() = 0;
virtual bool ValueChanged( unsigned int col, unsigned int row ) = 0;
virtual bool RowsReordered( unsigned int *new_order ) = 0;
virtual bool Cleared() = 0;
- virtual bool Freed()
- { m_owner = NULL; return true; }
void SetOwner( wxDataViewListModel *owner ) { m_owner = owner; }
wxDataViewListModel *GetOwner() { return m_owner; }
virtual void GetValue( wxVariant &variant, unsigned int col, unsigned int row ) const = 0;
// set value, call ValueChanged() afterwards!
- virtual bool SetValue( wxVariant &variant, unsigned int col, unsigned int row ) = 0;
+ virtual bool SetValue( const wxVariant &variant, unsigned int col, unsigned int row ) = 0;
// delegated notifiers
virtual bool RowAppended();
virtual void GetValue( wxVariant &variant, unsigned int col, unsigned int row ) const;
// set value, call ValueChanged() afterwards!
- virtual bool SetValue( wxVariant &variant, unsigned int col, unsigned int row );
+ virtual bool SetValue( const wxVariant &variant, unsigned int col, unsigned int row );
// called from user
virtual bool RowAppended();
bool ChildCleared();
virtual void Resort();
+
+ void DetachChild();
private:
bool m_ascending;
void InitStatics(); // BAD
};
+//-----------------------------------------------------------------------------
+// wxDataViewEditorCtrlEvtHandler
+//-----------------------------------------------------------------------------
+
+class wxDataViewEditorCtrlEvtHandler: public wxEvtHandler
+{
+public:
+ wxDataViewEditorCtrlEvtHandler( wxControl *editor, wxDataViewRenderer *owner );
+
+ void AcceptChangesAndFinish();
+ void SetFocusOnIdle( bool focus = true ) { m_focusOnIdle = focus; }
+
+protected:
+ void OnChar( wxKeyEvent &event );
+ void OnKillFocus( wxFocusEvent &event );
+ void OnIdle( wxIdleEvent &event );
+
+private:
+ wxDataViewRenderer *m_owner;
+ wxControl *m_editorCtrl;
+ bool m_finished;
+ bool m_focusOnIdle;
+
+private:
+ DECLARE_EVENT_TABLE()
+};
+
// ---------------------------------------------------------
// wxDataViewRendererBase
// ---------------------------------------------------------
virtual void SetAlignment( int align ) = 0;
virtual int GetAlignment() const = 0;
+ // in-place editing
+ virtual bool HasEditorCtrl()
+ { return false; }
+ virtual wxControl* CreateEditorCtrl(wxWindow * WXUNUSED(parent),
+ wxRect WXUNUSED(labelRect),
+ const wxVariant& WXUNUSED(value))
+ { return NULL; }
+ virtual bool GetValueFromEditorCtrl(wxControl * WXUNUSED(editor),
+ wxVariant& WXUNUSED(value))
+ { return false; }
+
+ virtual bool StartEditing( unsigned int row, wxRect labelRect );
+ virtual void CancelEditing();
+ virtual bool FinishEditing();
+
+ wxControl *GetEditorCtrl() { return m_editorCtrl; }
+
protected:
wxString m_variantType;
wxDataViewColumn *m_owner;
+ wxControl *m_editorCtrl;
+ unsigned int m_row; // for m_editorCtrl
// internal utility:
const wxDataViewCtrl* GetView() const;
private:
wxDataViewListModel *m_model;
wxList m_cols;
-
+
protected:
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCtrlBase)
};