]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataview.h
switching modal loop implementation, fixes #11921
[wxWidgets.git] / include / wx / dataview.h
index 66ef3ea532366714c359ec2c249b419f268f790d..f4c86ff9eec5470e2a5432a50f5773ece1094c89 100644 (file)
@@ -32,6 +32,14 @@ class WXDLLIMPEXP_FWD_CORE wxImageList;
     #define wxHAS_GENERIC_DATAVIEWCTRL
 #endif
 
+#ifdef wxHAS_GENERIC_DATAVIEWCTRL
+    // this symbol doesn't follow the convention for wxUSE_XXX symbols which
+    // are normally always defined as either 0 or 1, so its use is deprecated
+    // and it only exists for backwards compatibility, don't use it any more
+    // and use wxHAS_GENERIC_DATAVIEWCTRL instead
+    #define wxUSE_GENERICDATAVIEWCTRL
+#endif
+
 // ----------------------------------------------------------------------------
 // wxDataViewCtrl globals
 // ----------------------------------------------------------------------------
@@ -158,6 +166,8 @@ public:
     bool GetBold() const { return m_bold; }
     bool GetItalic() const { return m_italic; }
 
+    bool IsDefault() const { return !(HasColour() || HasFont()); }
+
 private:
     wxColour m_colour;
     bool     m_bold;
@@ -436,134 +446,11 @@ private:
     DECLARE_EVENT_TABLE()
 };
 
-// ---------------------------------------------------------
-// wxDataViewRendererBase
-// ---------------------------------------------------------
-
-enum wxDataViewCellMode
-{
-    wxDATAVIEW_CELL_INERT,
-    wxDATAVIEW_CELL_ACTIVATABLE,
-    wxDATAVIEW_CELL_EDITABLE
-};
-
-enum wxDataViewCellRenderState
-{
-    wxDATAVIEW_CELL_SELECTED    = 1,
-    wxDATAVIEW_CELL_PRELIT      = 2,
-    wxDATAVIEW_CELL_INSENSITIVE = 4,
-    wxDATAVIEW_CELL_FOCUSED     = 8
-};
-
-class WXDLLIMPEXP_ADV wxDataViewRendererBase: public wxObject
-{
-public:
-    wxDataViewRendererBase( const wxString &varianttype,
-                            wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
-                            int alignment = wxDVR_DEFAULT_ALIGNMENT );
-    virtual ~wxDataViewRendererBase();
-
-    virtual bool Validate( wxVariant& WXUNUSED(value) )
-        { return true; }
-
-    void SetOwner( wxDataViewColumn *owner )    { m_owner = owner; }
-    wxDataViewColumn* GetOwner() const          { return m_owner; }
-
-    // renderer properties:
-
-    virtual bool SetValue( const wxVariant& WXUNUSED(value) ) = 0;
-    virtual bool GetValue( wxVariant& WXUNUSED(value) ) const = 0;
-
-    wxString GetVariantType() const             { return m_variantType; }
-
-    virtual void SetMode( wxDataViewCellMode mode ) = 0;
-    virtual wxDataViewCellMode GetMode() const = 0;
-
-    // NOTE: Set/GetAlignment do not take/return a wxAlignment enum but
-    //       rather an "int"; that's because for rendering cells it's allowed
-    //       to combine alignment flags (e.g. wxALIGN_LEFT|wxALIGN_BOTTOM)
-    virtual void SetAlignment( int align ) = 0;
-    virtual int GetAlignment() const = 0;
-
-    // enable or disable (if called with wxELLIPSIZE_NONE) replacing parts of
-    // the item text (hence this only makes sense for renderers showing
-    // text...) with ellipsis in order to make it fit the column width
-    virtual void EnableEllipsize(wxEllipsizeMode mode = wxELLIPSIZE_MIDDLE) = 0;
-    void DisableEllipsize() { EnableEllipsize(wxELLIPSIZE_NONE); }
-
-    virtual wxEllipsizeMode GetEllipsizeMode() const = 0;
-
-    // in-place editing
-    virtual bool HasEditorCtrl() const
-        { 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( const wxDataViewItem &item, wxRect labelRect );
-    virtual void CancelEditing();
-    virtual bool FinishEditing();
-
-    wxControl *GetEditorCtrl() { return m_editorCtrl; }
-
-protected:
-    wxString                m_variantType;
-    wxDataViewColumn       *m_owner;
-    wxWeakRef<wxControl>    m_editorCtrl;
-    wxDataViewItem          m_item; // for m_editorCtrl
-
-    // internal utility:
-    const wxDataViewCtrl* GetView() const;
-
-protected:
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRendererBase)
-};
-
-//-----------------------------------------------------------------------------
-// wxDataViewIconText
-//-----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewIconText: public wxObject
-{
-public:
-    wxDataViewIconText( const wxString &text = wxEmptyString, const wxIcon& icon = wxNullIcon )
-        : m_text(text), m_icon(icon)
-    { }
-    wxDataViewIconText( const wxDataViewIconText &other )
-        : wxObject()
-    { m_icon = other.m_icon; m_text = other.m_text; }
-
-    void SetText( const wxString &text ) { m_text = text; }
-    wxString GetText() const             { return m_text; }
-    void SetIcon( const wxIcon &icon )   { m_icon = icon; }
-    const wxIcon &GetIcon() const        { return m_icon; }
-
-private:
-    wxString    m_text;
-    wxIcon      m_icon;
-
-private:
-    DECLARE_DYNAMIC_CLASS(wxDataViewIconText)
-};
-
-inline
-bool operator==(const wxDataViewIconText& left, const wxDataViewIconText& right)
-{
-    return left.GetText() == right.GetText() &&
-             left.GetIcon().IsSameAs(right.GetIcon());
-}
-
-inline
-bool operator!=(const wxDataViewIconText& left, const wxDataViewIconText& right)
-{
-    return !(left == right);
-}
+// ----------------------------------------------------------------------------
+// wxDataViewRenderer and related classes
+// ----------------------------------------------------------------------------
 
-DECLARE_VARIANT_OBJECT_EXPORTED(wxDataViewIconText, WXDLLIMPEXP_ADV)
+#include "wx/dvrenderers.h"
 
 // ---------------------------------------------------------
 // wxDataViewColumnBase
@@ -998,12 +885,6 @@ typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&);
 #define EVT_DATAVIEW_ITEM_DROP(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_DROP, id, fn)
 
 #ifdef wxHAS_GENERIC_DATAVIEWCTRL
-    // this symbol doesn't follow the convention for wxUSE_XXX symbols which
-    // are normally always defined as either 0 or 1, so its use is deprecated
-    // and it only exists for backwards compatibility, don't use it any more
-    // and use wxHAS_GENERIC_DATAVIEWCTRL instead
-    #define wxUSE_GENERICDATAVIEWCTRL
-
     #include "wx/generic/dataview.h"
 #elif defined(__WXGTK20__)
     #include "wx/gtk/dataview.h"
@@ -1013,60 +894,6 @@ typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&);
     #error "unknown native wxDataViewCtrl implementation"
 #endif
 
-// -------------------------------------
-// wxDataViewSpinRenderer
-// -------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewSpinRenderer: public wxDataViewCustomRenderer
-{
-public:
-    wxDataViewSpinRenderer( int min, int max,
-                            wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
-                            int alignment = wxDVR_DEFAULT_ALIGNMENT );
-    virtual bool HasEditorCtrl() const { return true; }
-    virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value );
-    virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value );
-    virtual bool Render( wxRect rect, wxDC *dc, int state );
-    virtual wxSize GetSize() const;
-    virtual bool SetValue( const wxVariant &value );
-    virtual bool GetValue( wxVariant &value ) const;
-
-private:
-    long    m_data;
-    long    m_min,m_max;
-};
-
-#if defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(__WXOSX_CARBON__)
-
-// -------------------------------------
-// wxDataViewChoiceRenderer
-// -------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewChoiceRenderer: public wxDataViewCustomRenderer
-{
-public:
-    wxDataViewChoiceRenderer( const wxArrayString &choices,
-                            wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
-                            int alignment = wxDVR_DEFAULT_ALIGNMENT );
-    virtual bool HasEditorCtrl() const { return true; }
-    virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value );
-    virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value );
-    virtual bool Render( wxRect rect, wxDC *dc, int state );
-    virtual wxSize GetSize() const;
-    virtual bool SetValue( const wxVariant &value );
-    virtual bool GetValue( wxVariant &value ) const;
-
-private:
-    wxArrayString m_choices;
-    wxString      m_data;
-};
-
-#endif
-
-// this class is obsolete, its functionality was merged in
-// wxDataViewTextRenderer itself now, don't use it any more
-#define wxDataViewTextRendererAttr wxDataViewTextRenderer
-
 //-----------------------------------------------------------------------------
 // wxDataViewListStore
 //-----------------------------------------------------------------------------
@@ -1311,7 +1138,7 @@ public:
 
     wxDataViewItem GetNthChild( const wxDataViewItem& parent, unsigned int pos ) const;
     int GetChildCount( const wxDataViewItem& parent ) const;
-
+    
     void SetItemText( const wxDataViewItem& item, const wxString &text );
     wxString GetItemText( const wxDataViewItem& item ) const;
     void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon );
@@ -1385,6 +1212,9 @@ public:
     const wxDataViewTreeStore *GetStore() const
         { return (const wxDataViewTreeStore*) GetModel(); }
 
+    bool IsContainer( const wxDataViewItem& item ) const
+        { return GetStore()->IsContainer(item); }
+
     void SetImageList( wxImageList *imagelist );
     wxImageList* GetImageList() { return m_imageList; }