| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- ///////////////////////////////////////////////////////////////////////////
- // Name: wx/generic/gridctrl.h
- // Purpose: wxGrid controls
- // Author: Paul Gammans, Roger Gammans
- // Modified by:
- // Created: 11/04/2001
- // Copyright: (c) The Computer Surgery (paul@compsurg.co.uk)
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_GENERIC_GRIDCTRL_H_
- #define _WX_GENERIC_GRIDCTRL_H_
- #include "wx/grid.h"
- #if wxUSE_GRID
- #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;
- };
- #if wxUSE_DATETIME
- #include "wx/datetime.h"
- // the default renderer for the cells containing times and dates
- class WXDLLIMPEXP_ADV wxGridCellDateTimeRenderer : public wxGridCellStringRenderer
- {
- public:
- wxGridCellDateTimeRenderer(const wxString& outformat = wxDefaultDateTimeFormat,
- const wxString& informat = wxDefaultDateTimeFormat);
- // 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;
- // output strptime()-like format string
- virtual void SetParameters(const wxString& params);
- protected:
- wxString GetString(const wxGrid& grid, int row, int col);
- wxString m_iformat;
- wxString m_oformat;
- wxDateTime m_dateDef;
- wxDateTime::TimeZone m_tz;
- };
- #endif // wxUSE_DATETIME
- // renders a number using the corresponding text string
- class WXDLLIMPEXP_ADV wxGridCellEnumRenderer : public wxGridCellStringRenderer
- {
- public:
- wxGridCellEnumRenderer( const wxString& choices = wxEmptyString );
- // 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;
- // 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(const wxGrid& grid, int row, int col);
- wxArrayString m_choices;
- };
- class WXDLLIMPEXP_ADV wxGridCellAutoWrapStringRenderer : public wxGridCellStringRenderer
- {
- public:
- wxGridCellAutoWrapStringRenderer() : wxGridCellStringRenderer() { }
- 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 wxGridCellAutoWrapStringRenderer; }
- private:
- wxArrayString GetTextLines( wxGrid& grid,
- wxDC& dc,
- const wxGridCellAttr& attr,
- const wxRect& rect,
- int row, int col);
- // Helper methods of GetTextLines()
- // 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);
- // 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_
|