]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/osx/dataview.h
guarding agains NULL
[wxWidgets.git] / include / wx / osx / dataview.h
index a48488022293442a66f429eecf7f7d03cb19d432..618a3c255835ad03a1555dcac565006cb8392559 100644 (file)
@@ -1,4 +1,3 @@
-
 /////////////////////////////////////////////////////////////////////////////
 // Name:        wx/osx/dataview.h
 // Purpose:     wxDataViewCtrl native implementation header for OSX
 // Class declarations to mask native types
 // --------------------------------------------------------
 class wxDataViewColumnNativeData;   // class storing environment dependent data for the native implementation
-class wxDataViewRendererNativeData; // class storing environment dependent data for the native renderer
 class wxDataViewWidgetImpl;         // class used as a common interface for carbon and cocoa implementation
 
-// ---------------------------------------------------------
-// wxDataViewRenderer
-// ---------------------------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewRenderer : public wxDataViewRendererBase
-{
-public:
-//
-// constructors / destructor
-//
-  wxDataViewRenderer(wxString const& varianttype, wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-  virtual ~wxDataViewRenderer();
-
-//
-// inherited methods from wxDataViewRendererBase
-//
-  virtual int GetAlignment() const
-  {
-    return m_alignment;
-  }
-  virtual wxDataViewCellMode GetMode() const
-  {
-    return m_mode;
-  }
-  virtual bool GetValue(wxVariant& value) const
-  {
-    value = m_value;
-    return true;
-  }
-
-  virtual void SetAlignment(int align); // carbon: is always identical to the header alignment;
-                                        // cocoa: cell alignment is independent from header alignment
-  virtual void SetMode(wxDataViewCellMode mode);
-  virtual bool SetValue(wxVariant const& newValue)
-  {
-    m_value = newValue;
-    return true;
-  }
-
-  virtual void EnableEllipsize(wxEllipsizeMode mode = wxELLIPSIZE_MIDDLE);
-  virtual wxEllipsizeMode GetEllipsizeMode() const;
-
-//
-// implementation
-//
-  wxVariant const& GetValue() const
-  {
-    return m_value;
-  }
-
-  wxDataViewRendererNativeData* GetNativeData() const
-  {
-    return m_NativeDataPtr;
-  }
-
-  virtual bool MacRender() = 0; // a call to the native data browser function to render the data;
-                             // returns true if the data value could be rendered, false otherwise
-
-  void SetNativeData(wxDataViewRendererNativeData* newNativeDataPtr);
-
-private:
-//
-// variables
-//
-  int m_alignment; // contains the alignment flags
-
-  wxDataViewCellMode m_mode; // storing the mode that determines how the cell is going to be shown
-
-  wxDataViewRendererNativeData* m_NativeDataPtr; // data used by implementation of the native renderer
-
-  wxVariant m_value; // value that is going to be rendered
-
-//
-// wxWidget internal stuff
-//
-  DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewCustomRenderer
-// ---------------------------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewCustomRenderer: public wxDataViewRenderer
-{
-public:
-//
-// constructors / destructor
-//
-  wxDataViewCustomRenderer(wxString const& varianttype=wxT("string"), wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-  virtual ~wxDataViewCustomRenderer();
-
-  void RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state );
-
-//
-// methods handling render space
-//
-  virtual wxSize GetSize() const = 0;
-
-//
-// methods handling user actions
-//
-  virtual bool Render(wxRect cell, wxDC* dc, int state) = 0;
-
-  virtual bool Activate( wxRect WXUNUSED(cell),
-                         wxDataViewModel *WXUNUSED(model),
-                         const wxDataViewItem & WXUNUSED(item),
-                         unsigned int WXUNUSED(col) )
-                         { return false; }
-
-  virtual bool LeftClick( wxPoint WXUNUSED(cursor),
-                          wxRect WXUNUSED(cell),
-                          wxDataViewModel *WXUNUSED(model),
-                          const wxDataViewItem & WXUNUSED(item),
-                          unsigned int WXUNUSED(col) )
-                          { return false; }
-
-  virtual bool StartDrag( wxPoint WXUNUSED(cursor),
-                          wxRect WXUNUSED(cell),
-                          wxDataViewModel *WXUNUSED(model),
-                          const wxDataViewItem & WXUNUSED(item),
-                          unsigned int WXUNUSED(col) )
-                          { return false; }
-
-//
-// device context handling
-//
-  virtual wxDC* GetDC(); // creates a device context and keeps it
-
-//
-// implementation
-//
-  virtual bool MacRender();
-
-  void SetDC(wxDC* newDCPtr); // this method takes ownership of the pointer
-
-protected:
-private:
-//
-// variables
-//
-  wxControl* m_editorCtrlPtr; // pointer to an in-place editor control
-
-  wxDC* m_DCPtr;
-
-//
-// wxWidget internal stuff
-//
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewTextRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewTextRenderer: public wxDataViewRenderer
-{
-public:
-//
-// constructors / destructor
-//
-    wxDataViewTextRenderer(wxString const& varianttype=wxT("string"), wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
-  virtual bool MacRender();
-
-protected:
-private:
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewBitmapRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewBitmapRenderer: public wxDataViewRenderer
-{
-public:
-//
-// constructors / destructor
-//
-  wxDataViewBitmapRenderer(wxString const& varianttype=wxT("wxBitmap"), wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
-  virtual bool MacRender();
-
-protected:
-private:
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapRenderer)
-};
-
-#if !defined(wxUSE_GENERICDATAVIEWCTRL) && defined(__WXOSX_COCOA__)
-
-// -------------------------------------
-// wxDataViewChoiceRenderer
-// -------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewChoiceRenderer: public wxDataViewRenderer
-{
-public:
-//
-// constructors / destructor
-//
-  wxDataViewChoiceRenderer(wxArrayString const& choices,
-                           wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
-                           int alignment = wxDVR_DEFAULT_ALIGNMENT );
-
-//
-// inherited functions from wxDataViewRenderer
-//
-  virtual bool MacRender();
-
-//
-// implementation
-//
-  wxString GetChoice(size_t index) const
-  {
-    return m_Choices[index];
-  }
-  wxArrayString const& GetChoices() const
-  {
-    return m_Choices;
-  }
-
-private:
-//
-// variables
-//
-  wxArrayString m_Choices;
-
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewChoiceRenderer)
-};
-
-#endif
-
-// ---------------------------------------------------------
-// wxDataViewIconTextRenderer
-// ---------------------------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewIconTextRenderer: public wxDataViewRenderer
-{
-public:
-  wxDataViewIconTextRenderer(wxString const& varianttype = wxT("wxDataViewIconText"), wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
-  virtual bool MacRender();
-
-protected:
-private:
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewIconTextRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewToggleRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewToggleRenderer: public wxDataViewRenderer
-{
-public:
-  wxDataViewToggleRenderer(wxString const& varianttype = wxT("bool"), wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
-  virtual bool MacRender();
-
-protected:
-private:
-  DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewProgressRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewProgressRenderer: public wxDataViewRenderer
-{
-public:
-  wxDataViewProgressRenderer(wxString const& label = wxEmptyString, wxString const& varianttype=wxT("long"),
-                             wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
-  virtual bool MacRender();
-
-protected:
-private:
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewDateRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewDateRenderer: public wxDataViewRenderer
-{
-public:
-  wxDataViewDateRenderer(wxString const& varianttype=wxT("datetime"), wxDataViewCellMode mode=wxDATAVIEW_CELL_ACTIVATABLE, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
-  virtual bool MacRender();
-
-protected:
-private:
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer)
-};
-
 // ---------------------------------------------------------
 // wxDataViewColumn
 // ---------------------------------------------------------
@@ -363,24 +48,23 @@ public:
     virtual int GetMaxWidth() const { return m_maxWidth; }
     virtual int GetMinWidth() const { return m_minWidth; }
     virtual wxString GetTitle() const { return m_title; }
-    virtual int GetWidth() const { return m_width; }
-    virtual bool IsHidden() const { return false; } // TODO
+    virtual int GetWidth() const;
     virtual bool IsSortOrderAscending() const { return m_ascending; }
     virtual bool IsSortKey() const;
+    virtual bool IsHidden() const;
 
     virtual void SetAlignment  (wxAlignment align);
     virtual void SetBitmap     (wxBitmap const& bitmap);
     virtual void SetFlags      (int flags) { SetIndividualFlags(flags); }
-    virtual void SetHidden     (bool WXUNUSED(hidden)) { } // TODO
+    virtual void SetHidden     (bool hidden);
     virtual void SetMaxWidth   (int maxWidth);
     virtual void SetMinWidth   (int minWidth);
     virtual void SetReorderable(bool reorderable);
-    virtual void SetResizeable (bool resizeable);
+    virtual void SetResizeable (bool resizable);
     virtual void SetSortable   (bool sortable);
     virtual void SetSortOrder  (bool ascending);
     virtual void SetTitle      (wxString const& title);
     virtual void SetWidth      (int  width);
-    virtual void SetAsSortKey  (bool sort = true);
 
    // implementation only
     wxDataViewColumnNativeData* GetNativeData() const
@@ -389,6 +73,10 @@ public:
     }
 
     void SetNativeData(wxDataViewColumnNativeData* newNativeDataPtr); // class takes ownership of pointer
+    int GetWidthVariable() const
+    {
+        return m_width;
+    }
     void SetWidthVariable(int NewWidth)
     {
         m_width = NewWidth;
@@ -406,8 +94,8 @@ private:
         m_flags = flags & ~wxDATAVIEW_COL_HIDDEN; // TODO
         m_maxWidth = 30000;
         m_minWidth = 0;
-        m_width = width >= 0 ? width : wxDVC_DEFAULT_WIDTH;
         m_alignment = align;
+        SetWidth(width);
     }
 
     bool m_ascending; // sorting order
@@ -440,20 +128,29 @@ public:
   {
     Init();
   }
-  wxDataViewCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0,
-                 const wxValidator& validator = wxDefaultValidator)
+  wxDataViewCtrl(wxWindow *parent,
+                 wxWindowID winid,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = 0,
+                 const wxValidator& validator = wxDefaultValidator,
+                 const wxString& name = wxDataViewCtrlNameStr )
   {
     Init();
-    Create(parent, id, pos, size, style, validator );
+    Create(parent, winid, pos, size, style, validator, name);
   }
 
   ~wxDataViewCtrl();
 
- // explicit control creation
-  bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize, long style=0,
-              const wxValidator& validator=wxDefaultValidator);
+  bool Create(wxWindow *parent,
+              wxWindowID winid,
+              const wxPoint& pos = wxDefaultPosition,
+              const wxSize& size = wxDefaultSize,
+              long style = 0,
+              const wxValidator& validator = wxDefaultValidator,
+              const wxString& name = wxDataViewCtrlNameStr);
 
-  virtual wxControl* GetMainWindow() // not used for the native implementation
+  virtual wxWindow* GetMainWindow() // not used for the native implementation
   {
     return this;
   }
@@ -476,10 +173,10 @@ public:
   virtual void Expand(const wxDataViewItem& item);
   virtual bool IsExpanded(const wxDataViewItem & item) const;
 
-
   virtual unsigned int GetCount() const;
-  virtual wxRect GetItemRect(const wxDataViewItem& item, const wxDataViewColumn* columnPtr) const;
-  virtual wxDataViewItem GetSelection() const;
+  virtual wxRect GetItemRect(const wxDataViewItem& item,
+                             const wxDataViewColumn* columnPtr = NULL) const;
+  virtual int GetSelectedItemsCount() const;
   virtual int GetSelections(wxDataViewItemArray& sel) const;
 
   virtual void HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const;
@@ -504,6 +201,8 @@ public:
 
  // finishes editing of custom items; if no custom item is currently edited the method does nothing
   void FinishCustomItemEditing();
+  
+  virtual void EditItem(const wxDataViewItem& item, const wxDataViewColumn *column);
 
  // returns the n-th pointer to a column;
  // this method is different from GetColumn(unsigned int pos) because here 'n' is not a position in the control but the n-th
@@ -558,6 +257,8 @@ public:
     m_Deleting = deleting;
   }
 
+  virtual wxDataViewColumn *GetCurrentColumn() const;
+
   virtual wxVisualAttributes GetDefaultAttributes() const
   {
       return GetClassDefaultAttributes(GetWindowVariant());
@@ -581,6 +282,9 @@ private:
  // initializing of local variables:
   void Init();
 
+  virtual wxDataViewItem DoGetCurrentItem() const;
+  virtual void DoSetCurrentItem(const wxDataViewItem& item);
+
  //
  // variables
  //
@@ -596,6 +300,8 @@ private:
 
   wxDataViewColumnPtrArrayType m_ColumnPtrs; // all column pointers are stored in an array
 
+  wxDataViewModelNotifier* m_ModelNotifier; // stores the model notifier for the control (does not own the notifier)
+
  // wxWidget internal stuff:
   DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)
   DECLARE_NO_COPY_CLASS(wxDataViewCtrl)