]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/grid.h
Fix wxMotif build.
[wxWidgets.git] / include / wx / generic / grid.h
index e74f117ae4add39d8dd14cc67b9ea68beac1760f..cab62c5661b5bf88fd79a8966a6ffe4328383635 100644 (file)
 
 #include "wx/defs.h"
 
 
 #include "wx/defs.h"
 
-#if !defined(wxUSE_NEW_GRID) || !(wxUSE_NEW_GRID)
-#include "wx/generic/gridg.h"
-#else
-
 #ifndef __WXGRID_H__
 #define __WXGRID_H__
 
 #ifndef __WXGRID_H__
 #define __WXGRID_H__
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
 #pragma interface "grid.h"
 #endif
 
 #pragma interface "grid.h"
 #endif
 
@@ -302,6 +298,9 @@ public:
     wxControl* GetControl() { return m_control; }
     void SetControl(wxControl* control) { m_control = control; }
 
     wxControl* GetControl() { return m_control; }
     void SetControl(wxControl* control) { m_control = control; }
 
+    wxGridCellAttr* GetCellAttr() { return m_attr; }
+    void SetCellAttr(wxGridCellAttr* attr) { m_attr = attr; }
+
     // Creates the actual edit control
     virtual void Create(wxWindow* parent,
                         wxWindowID id,
     // Creates the actual edit control
     virtual void Create(wxWindow* parent,
                         wxWindowID id,
@@ -357,6 +356,10 @@ public:
     // create a new object which is the copy of this one
     virtual wxGridCellEditor *Clone() const = 0;
 
     // create a new object which is the copy of this one
     virtual wxGridCellEditor *Clone() const = 0;
 
+    // DJC MAPTEK
+    // added GetValue so we can get the value which is in the control
+    virtual wxString GetValue() const = 0;
+
 protected:
     // the dtor is private because only DecRef() can delete us
     virtual ~wxGridCellEditor();
 protected:
     // the dtor is private because only DecRef() can delete us
     virtual ~wxGridCellEditor();
@@ -364,6 +367,9 @@ protected:
     // the control we show on screen
     wxControl*  m_control;
 
     // the control we show on screen
     wxControl*  m_control;
 
+    // a temporary pointer to the attribute being edited
+    wxGridCellAttr* m_attr;
+
     // if we change the colours/font of the control from the default ones, we
     // must restore the default later and we save them here between calls to
     // Show(TRUE) and Show(FALSE)
     // if we change the colours/font of the control from the default ones, we
     // must restore the default later and we save them here between calls to
     // Show(TRUE) and Show(FALSE)
@@ -374,6 +380,8 @@ protected:
     // suppress the stupid gcc warning about the class having private dtor and
     // no friends
     friend class wxGridCellEditorDummyFriend;
     // suppress the stupid gcc warning about the class having private dtor and
     // no friends
     friend class wxGridCellEditorDummyFriend;
+
+    DECLARE_NO_COPY_CLASS(wxGridCellEditor)
 };
 
 #if wxUSE_TEXTCTRL
 };
 
 #if wxUSE_TEXTCTRL
@@ -405,6 +413,9 @@ public:
     virtual wxGridCellEditor *Clone() const
         { return new wxGridCellTextEditor; }
 
     virtual wxGridCellEditor *Clone() const
         { return new wxGridCellTextEditor; }
 
+    // DJC MAPTEK
+    // added GetValue so we can get the value which is in the control
+    virtual wxString GetValue() const;
 protected:
     wxTextCtrl *Text() const { return (wxTextCtrl *)m_control; }
 
 protected:
     wxTextCtrl *Text() const { return (wxTextCtrl *)m_control; }
 
@@ -441,6 +452,9 @@ public:
 
     virtual wxGridCellEditor *Clone() const
         { return new wxGridCellNumberEditor(m_min, m_max); }
 
     virtual wxGridCellEditor *Clone() const
         { return new wxGridCellNumberEditor(m_min, m_max); }
+    // DJC MAPTEK
+    // added GetValue so we can get the value which is in the control
+    virtual wxString GetValue() const;
 
 protected:
     wxSpinCtrl *Spin() const { return (wxSpinCtrl *)m_control; }
 
 protected:
     wxSpinCtrl *Spin() const { return (wxSpinCtrl *)m_control; }
@@ -477,7 +491,7 @@ public:
     virtual void StartingKey(wxKeyEvent& event);
 
     virtual wxGridCellEditor *Clone() const
     virtual void StartingKey(wxKeyEvent& event);
 
     virtual wxGridCellEditor *Clone() const
-        { return new wxGridCellFloatEditor; }
+        { return new wxGridCellFloatEditor(m_width, m_precision); }
 
     // parameters string format is "width,precision"
     virtual void SetParameters(const wxString& params);
 
     // parameters string format is "width,precision"
     virtual void SetParameters(const wxString& params);
@@ -516,6 +530,9 @@ public:
 
     virtual wxGridCellEditor *Clone() const
         { return new wxGridCellBoolEditor; }
 
     virtual wxGridCellEditor *Clone() const
         { return new wxGridCellBoolEditor; }
+    // DJC MAPTEK
+    // added GetValue so we can get the value which is in the control
+    virtual wxString GetValue() const;
 
 protected:
     wxCheckBox *CBox() const { return (wxCheckBox *)m_control; }
 
 protected:
     wxCheckBox *CBox() const { return (wxCheckBox *)m_control; }
@@ -552,11 +569,16 @@ public:
     virtual void SetParameters(const wxString& params);
 
     virtual wxGridCellEditor *Clone() const;
     virtual void SetParameters(const wxString& params);
 
     virtual wxGridCellEditor *Clone() const;
+    // DJC MAPTEK
+    // added GetValue so we can get the value which is in the control
+    virtual wxString GetValue() const;
 
 protected:
     wxComboBox *Combo() const { return (wxComboBox *)m_control; }
 
 
 protected:
     wxComboBox *Combo() const { return (wxComboBox *)m_control; }
 
-private:
+// DJC - (MAPTEK) you at least need access to m_choices if you
+//                wish to override this class
+protected:
     wxString        m_startValue;
     wxArrayString   m_choices;
     bool            m_allowOthers;
     wxString        m_startValue;
     wxArrayString   m_choices;
     bool            m_allowOthers;
@@ -624,6 +646,8 @@ public:
         m_hAlign = hAlign;
         m_vAlign = vAlign;
     }
         m_hAlign = hAlign;
         m_vAlign = vAlign;
     }
+    void SetSize(int num_rows, int num_cols);
+    void SetOverflow( bool allow ) { m_overflow = allow; }
     void SetReadOnly(bool isReadOnly = TRUE)
         { m_isReadOnly = isReadOnly ? ReadOnly : ReadWrite; }
 
     void SetReadOnly(bool isReadOnly = TRUE)
         { m_isReadOnly = isReadOnly ? ReadOnly : ReadWrite; }
 
@@ -648,6 +672,8 @@ public:
     const wxColour& GetBackgroundColour() const;
     const wxFont& GetFont() const;
     void GetAlignment(int *hAlign, int *vAlign) const;
     const wxColour& GetBackgroundColour() const;
     const wxFont& GetFont() const;
     void GetAlignment(int *hAlign, int *vAlign) const;
+    void GetSize(int *num_rows, int *num_cols) const;
+    bool GetOverflow() const { return m_overflow; }
     wxGridCellRenderer *GetRenderer(wxGrid* grid, int row, int col) const;
     wxGridCellEditor *GetEditor(wxGrid* grid, int row, int col) const;
 
     wxGridCellRenderer *GetRenderer(wxGrid* grid, int row, int col) const;
     wxGridCellEditor *GetEditor(wxGrid* grid, int row, int col) const;
 
@@ -683,6 +709,9 @@ private:
     wxFont   m_font;
     int      m_hAlign,
              m_vAlign;
     wxFont   m_font;
     int      m_hAlign,
              m_vAlign;
+    int      m_sizeRows,
+             m_sizeCols;
+    bool     m_overflow;
 
     wxGridCellRenderer* m_renderer;
     wxGridCellEditor*   m_editor;
 
     wxGridCellRenderer* m_renderer;
     wxGridCellEditor*   m_editor;
@@ -737,6 +766,8 @@ private:
     void InitData();
 
     wxGridCellAttrProviderData *m_data;
     void InitData();
 
     wxGridCellAttrProviderData *m_data;
+
+    DECLARE_NO_COPY_CLASS(wxGridCellAttrProvider)
 };
 
 //////////////////////////////////////////////////////////////////////
 };
 
 //////////////////////////////////////////////////////////////////////
@@ -825,6 +856,7 @@ private:
     wxGridCellAttrProvider *m_attrProvider;
 
     DECLARE_ABSTRACT_CLASS( wxGridTableBase );
     wxGridCellAttrProvider *m_attrProvider;
 
     DECLARE_ABSTRACT_CLASS( wxGridTableBase );
+    DECLARE_NO_COPY_CLASS(wxGridTableBase)
 };
 
 
 };
 
 
@@ -868,6 +900,8 @@ private:
     int m_id;
     int m_comInt1;
     int m_comInt2;
     int m_id;
     int m_comInt1;
     int m_comInt2;
+
+    DECLARE_NO_COPY_CLASS(wxGridTableMessage)
 };
 
 
 };
 
 
@@ -1022,6 +1056,7 @@ public:
                      wxGrid::wxGridSelectCells );
 
     void SetSelectionMode(wxGrid::wxGridSelectionModes selmode);
                      wxGrid::wxGridSelectCells );
 
     void SetSelectionMode(wxGrid::wxGridSelectionModes selmode);
+    wxGrid::wxGridSelectionModes GetSelectionMode() const;
 
     // ------ grid dimensions
     //
 
     // ------ grid dimensions
     //
@@ -1083,11 +1118,13 @@ public:
     //
     void DrawTextRectangle( wxDC& dc, const wxString&, const wxRect&,
                             int horizontalAlignment = wxALIGN_LEFT,
     //
     void DrawTextRectangle( wxDC& dc, const wxString&, const wxRect&,
                             int horizontalAlignment = wxALIGN_LEFT,
-                            int verticalAlignment = wxALIGN_TOP );
+                            int verticalAlignment = wxALIGN_TOP,
+                            int textOrientation = wxHORIZONTAL );
 
     void DrawTextRectangle( wxDC& dc, const wxArrayString& lines, const wxRect&,
                             int horizontalAlignment = wxALIGN_LEFT,
 
     void DrawTextRectangle( wxDC& dc, const wxArrayString& lines, const wxRect&,
                             int horizontalAlignment = wxALIGN_LEFT,
-                            int verticalAlignment = wxALIGN_TOP );
+                            int verticalAlignment = wxALIGN_TOP,
+                            int textOrientation = wxHORIZONTAL );
 
 
     // Split a string containing newline chararcters into an array of
 
 
     // Split a string containing newline chararcters into an array of
@@ -1110,6 +1147,9 @@ public:
 
     int      GetBatchCount() { return m_batchCount; }
 
 
     int      GetBatchCount() { return m_batchCount; }
 
+    virtual void Refresh(bool eraseb = TRUE,
+                         const wxRect* rect = (const wxRect *)  NULL);
+
     // Use this, rather than wxWindow::Refresh(), to force an
     // immediate repainting of the grid. Has no effect if you are
     // already inside a BeginBatch / EndBatch block.
     // Use this, rather than wxWindow::Refresh(), to force an
     // immediate repainting of the grid. Has no effect if you are
     // already inside a BeginBatch / EndBatch block.
@@ -1122,7 +1162,7 @@ public:
 
     // ------ edit control functions
     //
 
     // ------ edit control functions
     //
-    bool IsEditable() { return m_editable; }
+    bool IsEditable() const { return m_editable; }
     void EnableEditing( bool edit );
 
     void EnableCellEditControl( bool enable = TRUE );
     void EnableEditing( bool edit );
 
     void EnableCellEditControl( bool enable = TRUE );
@@ -1196,6 +1236,7 @@ public:
     wxFont   GetLabelFont() { return m_labelFont; }
     void     GetRowLabelAlignment( int *horiz, int *vert );
     void     GetColLabelAlignment( int *horiz, int *vert );
     wxFont   GetLabelFont() { return m_labelFont; }
     void     GetRowLabelAlignment( int *horiz, int *vert );
     void     GetColLabelAlignment( int *horiz, int *vert );
+    int      GetColLabelTextOrientation();
     wxString GetRowLabelValue( int row );
     wxString GetColLabelValue( int col );
     wxColour GetGridLineColour() { return m_gridLineColour; }
     wxString GetRowLabelValue( int row );
     wxString GetColLabelValue( int col );
     wxColour GetGridLineColour() { return m_gridLineColour; }
@@ -1210,6 +1251,7 @@ public:
     void     SetLabelFont( const wxFont& );
     void     SetRowLabelAlignment( int horiz, int vert );
     void     SetColLabelAlignment( int horiz, int vert );
     void     SetLabelFont( const wxFont& );
     void     SetRowLabelAlignment( int horiz, int vert );
     void     SetColLabelAlignment( int horiz, int vert );
+    void     SetColLabelTextOrientation( int textOrientation );
     void     SetRowLabelValue( int row, const wxString& );
     void     SetColLabelValue( int col, const wxString& );
     void     SetGridLineColour( const wxColour& );
     void     SetRowLabelValue( int row, const wxString& );
     void     SetColLabelValue( int col, const wxString& );
     void     SetGridLineColour( const wxColour& );
@@ -1227,7 +1269,8 @@ public:
     void     DisableDragGridSize() { EnableDragGridSize(FALSE); }
     bool     CanDragGridSize() { return m_canDragGridSize; }
 
     void     DisableDragGridSize() { EnableDragGridSize(FALSE); }
     bool     CanDragGridSize() { return m_canDragGridSize; }
 
-    // this sets the specified attribute for all cells in this row/col
+    // this sets the specified attribute for this cell or in this row/col
+    void     SetAttr(int row, int col, wxGridCellAttr *attr);
     void     SetRowAttr(int row, wxGridCellAttr *attr);
     void     SetColAttr(int col, wxGridCellAttr *attr);
 
     void     SetRowAttr(int row, wxGridCellAttr *attr);
     void     SetColAttr(int col, wxGridCellAttr *attr);
 
@@ -1256,6 +1299,9 @@ public:
     wxFont   GetCellFont( int row, int col );
     void     GetDefaultCellAlignment( int *horiz, int *vert );
     void     GetCellAlignment( int row, int col, int *horiz, int *vert );
     wxFont   GetCellFont( int row, int col );
     void     GetDefaultCellAlignment( int *horiz, int *vert );
     void     GetCellAlignment( int row, int col, int *horiz, int *vert );
+    bool     GetDefaultCellOverflow();
+    bool     GetCellOverflow( int row, int col );
+    void     GetCellSize( int row, int col, int *num_rows, int *num_cols );
 
     void     SetDefaultRowSize( int height, bool resizeExistingRows = FALSE );
     void     SetRowSize( int row, int height );
 
     void     SetDefaultRowSize( int height, bool resizeExistingRows = FALSE );
     void     SetRowSize( int row, int height );
@@ -1282,6 +1328,12 @@ public:
     // and also set the grid size to just fit its contents
     void     AutoSize();
 
     // and also set the grid size to just fit its contents
     void     AutoSize();
 
+    // autosize row height depending on label text
+    void     AutoSizeRowLabelSize( int row );
+
+    // autosize column width depending on label text
+    void     AutoSizeColLabelSize( int col );
+
     // column won't be resized to be lesser width - this must be called during
     // the grid creation because it won't resize the column if it's already
     // narrower than the minimal width
     // column won't be resized to be lesser width - this must be called during
     // the grid creation because it won't resize the column if it's already
     // narrower than the minimal width
@@ -1297,6 +1349,9 @@ public:
     void     SetCellFont( int row, int col, const wxFont& );
     void     SetDefaultCellAlignment( int horiz, int vert );
     void     SetCellAlignment( int row, int col, int horiz, int vert );
     void     SetCellFont( int row, int col, const wxFont& );
     void     SetDefaultCellAlignment( int horiz, int vert );
     void     SetCellAlignment( int row, int col, int horiz, int vert );
+    void     SetDefaultCellOverflow( bool allow );
+    void     SetCellOverflow( int row, int col, bool allow );
+    void     SetCellSize( int row, int col, int num_rows, int num_cols );
 
     // takes ownership of the pointer
     void SetDefaultRenderer(wxGridCellRenderer *renderer);
 
     // takes ownership of the pointer
     void SetDefaultRenderer(wxGridCellRenderer *renderer);
@@ -1339,7 +1394,7 @@ public:
     // make the cell editable/readonly
     void SetReadOnly(int row, int col, bool isReadOnly = TRUE);
 
     // make the cell editable/readonly
     void SetReadOnly(int row, int col, bool isReadOnly = TRUE);
 
-    // ------ selections of blocks of cells
+    // ------ select blocks of cells
     //
     void SelectRow( int row, bool addToSelected = FALSE );
     void SelectCol( int col, bool addToSelected = FALSE );
     //
     void SelectRow( int row, bool addToSelected = FALSE );
     void SelectCol( int col, bool addToSelected = FALSE );
@@ -1358,7 +1413,7 @@ public:
 
     bool IsSelection();
 
 
     bool IsSelection();
 
-    // ------ deselection
+    // ------ deselect blocks or cells
     //
     void DeselectRow( int row );
     void DeselectCol( int col );
     //
     void DeselectRow( int row );
     void DeselectCol( int col );
@@ -1366,11 +1421,16 @@ public:
 
     void ClearSelection();
 
 
     void ClearSelection();
 
-    bool IsInSelection( int row, int col );
+    bool IsInSelection( int row, int col ) const;
 
 
-    bool IsInSelection( const wxGridCellCoords& coords )
+    bool IsInSelection( const wxGridCellCoords& coords ) const
         { return IsInSelection( coords.GetRow(), coords.GetCol() ); }
 
         { return IsInSelection( coords.GetRow(), coords.GetCol() ); }
 
+    wxGridCellCoordsArray GetSelectedCells() const;
+    wxGridCellCoordsArray GetSelectionBlockTopLeft() const;
+    wxGridCellCoordsArray GetSelectionBlockBottomRight() const;
+    wxArrayInt GetSelectedRows() const;
+    wxArrayInt GetSelectedCols() const;
 
     // This function returns the rectangle that encloses the block of cells
     // limited by TopLeft and BottomRight cell in device coords and clipped
 
     // This function returns the rectangle that encloses the block of cells
     // limited by TopLeft and BottomRight cell in device coords and clipped
@@ -1393,12 +1453,13 @@ public:
     void RegisterDataType(const wxString& typeName,
                           wxGridCellRenderer* renderer,
                           wxGridCellEditor* editor);
     void RegisterDataType(const wxString& typeName,
                           wxGridCellRenderer* renderer,
                           wxGridCellEditor* editor);
-    wxGridCellEditor* GetDefaultEditorForCell(int row, int col) const;
+    // DJC MAPTEK
+    virtual wxGridCellEditor* GetDefaultEditorForCell(int row, int col) const;
     wxGridCellEditor* GetDefaultEditorForCell(const wxGridCellCoords& c) const
         { return GetDefaultEditorForCell(c.GetRow(), c.GetCol()); }
     wxGridCellEditor* GetDefaultEditorForCell(const wxGridCellCoords& c) const
         { return GetDefaultEditorForCell(c.GetRow(), c.GetCol()); }
-    wxGridCellRenderer* GetDefaultRendererForCell(int row, int col) const;
-    wxGridCellEditor* GetDefaultEditorForType(const wxString& typeName) const;
-    wxGridCellRenderer* GetDefaultRendererForType(const wxString& typeName) const;
+    virtual wxGridCellRenderer* GetDefaultRendererForCell(int row, int col) const;
+    virtual wxGridCellEditor* GetDefaultEditorForType(const wxString& typeName) const;
+    virtual wxGridCellRenderer* GetDefaultRendererForType(const wxString& typeName) const;
 
     // grid may occupy more space than needed for its rows/columns, this
     // function allows to set how big this extra space is
 
     // grid may occupy more space than needed for its rows/columns, this
     // function allows to set how big this extra space is
@@ -1652,6 +1713,7 @@ protected:
     int        m_rowLabelVertAlign;
     int        m_colLabelHorizAlign;
     int        m_colLabelVertAlign;
     int        m_rowLabelVertAlign;
     int        m_colLabelHorizAlign;
     int        m_colLabelVertAlign;
+    int        m_colLabelTextOrientation;
 
     bool       m_defaultRowLabelValues;
     bool       m_defaultColLabelValues;
 
     bool       m_defaultRowLabelValues;
     bool       m_defaultColLabelValues;
@@ -1801,10 +1863,11 @@ protected:
     bool GetModelValues();
     bool SetModelValues();
 
     bool GetModelValues();
     bool SetModelValues();
 
-        friend class wxGridSelection;
+    friend class WXDLLEXPORT wxGridSelection;
 
     DECLARE_DYNAMIC_CLASS( wxGrid )
     DECLARE_EVENT_TABLE()
 
     DECLARE_DYNAMIC_CLASS( wxGrid )
     DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxGrid)
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
@@ -1953,6 +2016,7 @@ private:
     wxControl* m_ctrl;
 
     DECLARE_DYNAMIC_CLASS(wxGridEditorCreatedEvent)
     wxControl* m_ctrl;
 
     DECLARE_DYNAMIC_CLASS(wxGridEditorCreatedEvent)
+    DECLARE_NO_COPY_CLASS(wxGridEditorCreatedEvent)
 };
 
 
 };
 
 
@@ -2011,6 +2075,5 @@ extern const int wxEVT_GRID_CHANGE_SEL_LABEL;
 
 #endif
 
 
 #endif
 
-#endif  // #ifndef __WXGRID_H__
+#endif  // ifndef wxUSE_GRID
 
 
-#endif  // ifndef wxUSE_NEW_GRID