X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3379ed3789e405f874d9db757d95346f1d378795..64c38b4be828b7b18f7d51f80eb9848f1cccf40e:/include/wx/generic/gridctrl.h diff --git a/include/wx/generic/gridctrl.h b/include/wx/generic/gridctrl.h index 82431d0c0e..987d2e9aed 100644 --- a/include/wx/generic/gridctrl.h +++ b/include/wx/generic/gridctrl.h @@ -12,26 +12,52 @@ #ifndef _WX_GENERIC_GRIDCTRL_H_ #define _WX_GENERIC_GRIDCTRL_H_ -#ifdef __GNUG__ - #pragma interface "gridctrl.h" -#endif - -#if wxUSE_GRID || wxUSE_NEW_GRID - #include "wx/grid.h" -#include "wx/string.h" -#include "wx/datetime.h" + +#if wxUSE_GRID #define wxGRID_VALUE_CHOICEINT _T("choiceint") #define wxGRID_VALUE_DATETIME _T("datetime") -// the default renderer for the cells containing Time and dates.. -class WXDLLEXPORT wxGridCellDateTimeRenderer : public wxGridCellStringRenderer + +// the default renderer for the cells containing string data +class WXDLLIMPEXP_ADV wxGridCellStringRenderer : public wxGridCellRenderer { public: - wxGridCellDateTimeRenderer(wxString outformat = _T("%c"), - wxString informat = _T("%c")); + // draw the string + virtual void Draw(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + const wxRect& rect, + int row, int col, + bool isSelected); + + // return the string extent + virtual wxSize GetBestSize(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + int row, int col); + + virtual wxGridCellRenderer *Clone() const + { return new wxGridCellStringRenderer; } + +protected: + // set the text colours before drawing + void SetTextColoursAndFont(const wxGrid& grid, + const wxGridCellAttr& attr, + wxDC& dc, + bool isSelected); + + // calc the string extent for given string/font + wxSize DoGetBestSize(const wxGridCellAttr& attr, + wxDC& dc, + const wxString& text); +}; +// the default renderer for the cells containing numeric (long) data +class WXDLLIMPEXP_ADV wxGridCellNumberRenderer : public wxGridCellStringRenderer +{ +public: // draw the string right aligned virtual void Draw(wxGrid& grid, wxGridCellAttr& attr, @@ -45,26 +71,89 @@ public: wxDC& dc, int row, int col); - virtual wxGridCellRenderer *Clone() const; + virtual wxGridCellRenderer *Clone() const + { return new wxGridCellNumberRenderer; } + +protected: + wxString GetString(const wxGrid& grid, int row, int col); +}; + +class WXDLLIMPEXP_ADV wxGridCellFloatRenderer : public wxGridCellStringRenderer +{ +public: + wxGridCellFloatRenderer(int width = -1, int precision = -1); + + // get/change formatting parameters + int GetWidth() const { return m_width; } + void SetWidth(int width) { m_width = width; m_format.clear(); } + int GetPrecision() const { return m_precision; } + void SetPrecision(int precision) { m_precision = precision; m_format.clear(); } + + // draw the string right aligned with given width/precision + virtual void Draw(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + const wxRect& rect, + int row, int col, + bool isSelected); + + virtual wxSize GetBestSize(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + int row, int col); // parameters string format is "width[,precision]" virtual void SetParameters(const wxString& params); + virtual wxGridCellRenderer *Clone() const; + protected: - wxString GetString(wxGrid& grid, int row, int col); + wxString GetString(const wxGrid& grid, int row, int col); - wxString m_iformat; - wxString m_oformat; - wxDateTime m_dateDef; - wxDateTime::TimeZone m_tz; +private: + // formatting parameters + int m_width, + m_precision; + + wxString m_format; }; +// renderer for boolean fields +class WXDLLIMPEXP_ADV wxGridCellBoolRenderer : public wxGridCellRenderer +{ +public: + // draw a check mark or nothing + virtual void Draw(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + const wxRect& rect, + int row, int col, + bool isSelected); + + // return the checkmark size + virtual wxSize GetBestSize(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + int row, int col); + + virtual wxGridCellRenderer *Clone() const + { return new wxGridCellBoolRenderer; } + +private: + static wxSize ms_sizeCheckMark; +}; + + +#if wxUSE_DATETIME + +#include "wx/datetime.h" // the default renderer for the cells containing Time and dates.. -class WXDLLEXPORT wxGridCellEnumRenderer : public wxGridCellStringRenderer +class WXDLLIMPEXP_ADV wxGridCellDateTimeRenderer : public wxGridCellStringRenderer { public: - wxGridCellEnumRenderer( const wxString& choices = wxEmptyString ); + wxGridCellDateTimeRenderer(const wxString& outformat = wxDefaultDateTimeFormat, + const wxString& informat = wxDefaultDateTimeFormat); // draw the string right aligned virtual void Draw(wxGrid& grid, @@ -81,48 +170,52 @@ public: virtual wxGridCellRenderer *Clone() const; - // parameters string format is "item1[,item2[...,itemN]]" + // parameters string format is "width[,precision]" virtual void SetParameters(const wxString& params); protected: - wxString GetString(wxGrid& grid, int row, int col); + wxString GetString(const wxGrid& grid, int row, int col); - wxArrayString m_choices; + wxString m_iformat; + wxString m_oformat; + wxDateTime m_dateDef; + wxDateTime::TimeZone m_tz; }; +#endif // wxUSE_DATETIME -#if wxUSE_COMBOBOX - -class WXDLLEXPORT wxGridCellEnumEditor : public wxGridCellChoiceEditor +// the default renderer for the cells containing Time and dates.. +class WXDLLIMPEXP_ADV wxGridCellEnumRenderer : public wxGridCellStringRenderer { public: - wxGridCellEnumEditor( const wxString& choices = wxEmptyString ); - virtual ~wxGridCellEnumEditor() {}; + wxGridCellEnumRenderer( const wxString& choices = wxEmptyString ); - virtual wxGridCellEditor* Clone() const; + // draw the string right aligned + virtual void Draw(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + const wxRect& rect, + int row, int col, + bool isSelected); - virtual bool EndEdit(int row, int col, wxGrid* grid); - virtual void BeginEdit(int row, int col, wxGrid* grid); + virtual wxSize GetBestSize(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + int row, int col); -private: - long int m_startint; -}; + virtual wxGridCellRenderer *Clone() const; -#endif // wxUSE_COMBOBOX + // parameters string format is "item1[,item2[...,itemN]]" + virtual void SetParameters(const wxString& params); -class wxGridCellAutoWrapStringEditor : public wxGridCellTextEditor -{ -public: - wxGridCellAutoWrapStringEditor() : wxGridCellTextEditor() { } - virtual void Create(wxWindow* parent, - wxWindowID id, - wxEvtHandler* evtHandler); +protected: + wxString GetString(const wxGrid& grid, int row, int col); - virtual wxGridCellEditor *Clone() const - { return new wxGridCellAutoWrapStringEditor; } + wxArrayString m_choices; }; -class wxGridCellAutoWrapStringRenderer : public wxGridCellStringRenderer + +class WXDLLIMPEXP_ADV wxGridCellAutoWrapStringRenderer : public wxGridCellStringRenderer { public: wxGridCellAutoWrapStringRenderer() : wxGridCellStringRenderer() { } @@ -145,13 +238,11 @@ public: private: wxArrayString GetTextLines( wxGrid& grid, wxDC& dc, - wxGridCellAttr& attr, + const wxGridCellAttr& attr, const wxRect& rect, int row, int col); }; -#endif // #if wxUSE_GRID || wxUSE_NEW_GRID - -#endif //_WX_GENERIC_GRIDCTRL_H_ - +#endif // wxUSE_GRID +#endif // _WX_GENERIC_GRIDCTRL_H_