X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..b8f0ac88a51be909c0e5b87657ea0a5dc9bbb721:/include/wx/generic/gridctrl.h diff --git a/include/wx/generic/gridctrl.h b/include/wx/generic/gridctrl.h index 2f982c5c33..d1e82b40eb 100644 --- a/include/wx/generic/gridctrl.h +++ b/include/wx/generic/gridctrl.h @@ -1,39 +1,165 @@ /////////////////////////////////////////////////////////////////////////// -// Name: generic/gridctrl.h +// Name: wx/generic/gridctrl.h // Purpose: wxGrid controls // Author: Paul Gammans, Roger Gammans // Modified by: // Created: 11/04/2001 // RCS-ID: $Id$ // Copyright: (c) The Computer Surgery (paul@compsurg.co.uk) -// Licence: wxWidgets licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_GENERIC_GRIDCTRL_H_ #define _WX_GENERIC_GRIDCTRL_H_ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma interface "gridctrl.h" -#endif +#include "wx/grid.h" #if wxUSE_GRID -#include "wx/grid.h" -#include "wx/string.h" -#include "wx/arrstr.h" -#include "wx/datetime.h" +#define wxGRID_VALUE_CHOICEINT wxT("choiceint") +#define wxGRID_VALUE_DATETIME wxT("datetime") + + +// the default renderer for the cells containing string data +class WXDLLIMPEXP_ADV wxGridCellStringRenderer : public wxGridCellRenderer +{ +public: + // 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, + wxDC& dc, + const wxRect& rect, + int row, int col, + bool isSelected); + + virtual wxSize GetBestSize(wxGrid& grid, + wxGridCellAttr& attr, + wxDC& dc, + int row, int col); + + 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, + int format = wxGRID_FLOAT_FORMAT_DEFAULT); + + // 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(); } + int GetFormat() const { return m_style; } + void SetFormat(int format) { m_style = format; 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[,format]]" + // with format being one of f|e|g|E|F|G + virtual void SetParameters(const wxString& params); + + virtual wxGridCellRenderer *Clone() const; + +protected: + wxString GetString(const wxGrid& grid, int row, int col); + +private: + // formatting parameters + int m_width, + m_precision; + + int m_style; + 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; +}; -#define wxGRID_VALUE_CHOICEINT _T("choiceint") -#define wxGRID_VALUE_DATETIME _T("datetime") #if wxUSE_DATETIME -// the default renderer for the cells containing Time and dates.. +#include "wx/datetime.h" + +// the default renderer for the cells containing times and dates class WXDLLIMPEXP_ADV wxGridCellDateTimeRenderer : public wxGridCellStringRenderer { public: - wxGridCellDateTimeRenderer(wxString outformat = _T("%c"), - wxString informat = _T("%c")); + wxGridCellDateTimeRenderer(const wxString& outformat = wxDefaultDateTimeFormat, + const wxString& informat = wxDefaultDateTimeFormat); // draw the string right aligned virtual void Draw(wxGrid& grid, @@ -50,11 +176,11 @@ public: virtual wxGridCellRenderer *Clone() const; - // parameters string format is "width[,precision]" + // output strptime()-like format string virtual void SetParameters(const wxString& params); protected: - wxString GetString(wxGrid& grid, int row, int col); + wxString GetString(const wxGrid& grid, int row, int col); wxString m_iformat; wxString m_oformat; @@ -64,7 +190,7 @@ protected: #endif // wxUSE_DATETIME -// the default renderer for the cells containing Time and dates.. +// renders a number using the corresponding text string class WXDLLIMPEXP_ADV wxGridCellEnumRenderer : public wxGridCellStringRenderer { public: @@ -85,51 +211,17 @@ public: virtual wxGridCellRenderer *Clone() const; - // parameters string format is "item1[,item2[...,itemN]]" + // parameters string format is "item1[,item2[...,itemN]]" where itemN will + // be used if the cell value is N-1 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; }; -#if wxUSE_COMBOBOX - -class WXDLLIMPEXP_ADV wxGridCellEnumEditor : public wxGridCellChoiceEditor -{ -public: - wxGridCellEnumEditor( const wxString& choices = wxEmptyString ); - virtual ~wxGridCellEnumEditor() {}; - - virtual wxGridCellEditor* Clone() const; - - virtual bool EndEdit(int row, int col, wxGrid* grid); - virtual void BeginEdit(int row, int col, wxGrid* grid); - -private: - long int m_startint; - - DECLARE_NO_COPY_CLASS(wxGridCellEnumEditor) -}; - -#endif // wxUSE_COMBOBOX - -class WXDLLIMPEXP_ADV wxGridCellAutoWrapStringEditor : public wxGridCellTextEditor -{ -public: - wxGridCellAutoWrapStringEditor() : wxGridCellTextEditor() { } - virtual void Create(wxWindow* parent, - wxWindowID id, - wxEvtHandler* evtHandler); - - virtual wxGridCellEditor *Clone() const - { return new wxGridCellAutoWrapStringEditor; } - - DECLARE_NO_COPY_CLASS(wxGridCellAutoWrapStringEditor) -}; - class WXDLLIMPEXP_ADV wxGridCellAutoWrapStringRenderer : public wxGridCellStringRenderer { public: @@ -153,13 +245,33 @@ public: private: wxArrayString GetTextLines( wxGrid& grid, wxDC& dc, - wxGridCellAttr& attr, + const wxGridCellAttr& attr, const wxRect& rect, int row, int col); -}; + // Helper methods of GetTextLines() -#endif // #if wxUSE_GRID + // Break a single logical line of text into several physical lines, all of + // which are added to the lines array. The lines are broken at maxWidth and + // the dc is used for measuring text extent only. + void BreakLine(wxDC& dc, + const wxString& logicalLine, + wxCoord maxWidth, + wxArrayString& lines); -#endif //_WX_GENERIC_GRIDCTRL_H_ + // Break a word, which is supposed to be wider than maxWidth, into several + // lines, which are added to lines array and the last, incomplete, of which + // is returned in line output parameter. + // + // Returns the width of the last line. + wxCoord BreakWord(wxDC& dc, + const wxString& word, + wxCoord maxWidth, + wxArrayString& lines, + wxString& line); + + +}; +#endif // wxUSE_GRID +#endif // _WX_GENERIC_GRIDCTRL_H_