]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/gridctrl.h
adding OnLaunched
[wxWidgets.git] / include / wx / generic / gridctrl.h
index ddcc1bc69d551f1c01c01642d238f614c1ca9814..d1e82b40ebc71393dd5fc941d98e54e3e3c9c970 100644 (file)
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////
-// Name:        generic/gridctrl.h
+// Name:        wx/generic/gridctrl.h
 // Purpose:     wxGrid controls
 // Author:      Paul Gammans, Roger Gammans
 // Modified by:
 #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_