]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/grid.h
Cleanup of wxSocket::_Wait():
[wxWidgets.git] / interface / wx / grid.h
index 10d96fc53080ad8bb1fb211f3763a5b6de8fbe0a..bd4284dc55b02dd4509b8e71583f0bf7508b49de 100644 (file)
@@ -41,7 +41,7 @@ public:
     /**
         Parameters string format is "width[,precision]".
     */
-    void SetParameters(const wxString& params);
+    virtual void SetParameters(const wxString& params);
 
     /**
         Sets the precision.
@@ -86,12 +86,42 @@ public:
     /// Destructor frees the attribute provider if it was created.
     virtual ~wxGridTableBase();
 
-    /// Must be overridden to return the number of rows in the table.
+    /**
+        Must be overridden to return the number of rows in the table.
+
+        For backwards compatibility reasons, this method is not const.
+        Use GetRowsCount() instead of it in const methods of derived table
+        classes.
+     */
     virtual int GetNumberRows() = 0;
 
-    /// Must be overridden to return the number of columns in the table.
+    /**
+        Must be overridden to return the number of columns in the table.
+
+        For backwards compatibility reasons, this method is not const.
+        Use GetColsCount() instead of it in const methods of derived table
+        classes,
+     */
     virtual int GetNumberCols() = 0;
 
+    /**
+        Return the number of rows in the table.
+
+        This method is not virtual and is only provided as a convenience for
+        the derived classes which can't call GetNumberRows() without a @c
+        const_cast from their const methods.
+     */
+    int GetRowsCount() const;
+
+    /**
+        Return the number of columns in the table.
+
+        This method is not virtual and is only provided as a convenience for
+        the derived classes which can't call GetNumberCols() without a @c
+        const_cast from their const methods.
+     */
+    int GetColsCount() const;
+
 
     /**
         Accessing table cells.
@@ -101,6 +131,14 @@ public:
     /// Must be overridden to implement testing for empty cells.
     virtual bool IsEmptyCell(int row, int col) = 0;
 
+    /**
+        Same as IsEmptyCell() but taking wxGridCellCoords.
+
+        Notice that this method is not virtual, only IsEmptyCell() should be
+        overridden.
+     */
+    bool IsEmpty(const wxGridCellCoords& coords);
+
     /// Must be overridden to implement accessing the table values as text.
     virtual wxString GetValue(int row, int col) = 0;
 
@@ -432,7 +470,7 @@ public:
     /**
         The dtor is private because only DecRef() can delete us.
     */
-    ~wxGridCellEditor();
+    virtual ~wxGridCellEditor();
 
     /**
         Fetch the value from the table and prepare the edit control
@@ -454,7 +492,7 @@ public:
     /**
         Final cleanup.
     */
-    void Destroy();
+    virtual void Destroy();
 
     /**
         Complete the editing of the current cell. Returns @true if the value has
@@ -466,7 +504,7 @@ public:
         Some types of controls on some platforms may need some help
         with the Return key.
     */
-    void HandleReturn(wxKeyEvent& event);
+    virtual void HandleReturn(wxKeyEvent& event);
 
     /**
 
@@ -488,26 +526,26 @@ public:
     /**
         Size and position the edit control.
     */
-    void SetSize(const wxRect& rect);
+    virtual void SetSize(const wxRect& rect);
 
     /**
         Show or hide the edit control, use the specified attributes to set
         colours/fonts for it.
     */
-    void Show(bool show, wxGridCellAttr* attr = NULL);
+    virtual void Show(bool show, wxGridCellAttr* attr = NULL);
 
     /**
         If the editor is enabled by clicking on the cell, this method will be
         called.
     */
-    void StartingClick();
+    virtual void StartingClick();
 
     /**
         If the editor is enabled by pressing keys on the grid,
         this will be called to let the editor do something about
         that first key if desired.
     */
-    void StartingKey(wxKeyEvent& event);
+    virtual void StartingKey(wxKeyEvent& event);
 };
 
 
@@ -535,7 +573,7 @@ public:
         The parameters string format is "n" where n is a number representing the
         maximum width.
     */
-    void SetParameters(const wxString& params);
+    virtual void SetParameters(const wxString& params);
 };
 
 
@@ -596,7 +634,7 @@ public:
     /**
         Parameters string format is "item1[,item2[...,itemN]]"
     */
-    void SetParameters(const wxString& params);
+    virtual void SetParameters(const wxString& params);
 };
 
 
@@ -685,12 +723,12 @@ public:
     /**
         Returns @true if the Alt key was down at the time of the event.
     */
-    bool AltDown();
+    bool AltDown() const;
 
     /**
         Returns @true if the Control key was down at the time of the event.
     */
-    bool ControlDown();
+    bool ControlDown() const;
 
     /**
         Top left corner of the rectangular area that was (de)selected.
@@ -725,7 +763,7 @@ public:
     /**
         Returns @true if the Meta key was down at the time of the event.
     */
-    bool MetaDown();
+    bool MetaDown() const;
 
     /**
         Returns @true if the area was selected, @false otherwise.
@@ -735,7 +773,7 @@ public:
     /**
         Returns @true if the Shift key was down at the time of the event.
     */
-    bool ShiftDown();
+    bool ShiftDown() const;
 };
 
 
@@ -819,7 +857,7 @@ public:
     /**
         Parameters string format is "min,max".
     */
-    void SetParameters(const wxString& params);
+    virtual void SetParameters(const wxString& params);
 };
 
 
@@ -853,12 +891,12 @@ public:
     /**
         Returns @true if the Alt key was down at the time of the event.
     */
-    bool AltDown();
+    bool AltDown() const;
 
     /**
         Returns @true if the Control key was down at the time of the event.
     */
-    bool ControlDown();
+    bool ControlDown() const;
 
     /**
         Position in pixels at which the event occurred.
@@ -873,12 +911,12 @@ public:
     /**
         Returns @true if the Meta key was down at the time of the event.
     */
-    bool MetaDown();
+    bool MetaDown() const;
 
     /**
         Returns @true if the Shift key was down at the time of the event.
     */
-    bool ShiftDown();
+    bool ShiftDown() const;
 };
 
 
@@ -1108,17 +1146,17 @@ public:
     /**
         Returns @true if the Alt key was down at the time of the event.
     */
-    bool AltDown();
+    bool AltDown() const;
 
     /**
         Returns @true if the Control key was down at the time of the event.
     */
-    bool ControlDown();
+    bool ControlDown() const;
 
     /**
         Column at which the event occurred.
     */
-    int GetCol();
+    virtual int GetCol();
 
     /**
         Position in pixels at which the event occurred.
@@ -1128,12 +1166,12 @@ public:
     /**
         Row at which the event occurred.
     */
-    int GetRow();
+    virtual int GetRow();
 
     /**
         Returns @true if the Meta key was down at the time of the event.
     */
-    bool MetaDown();
+    bool MetaDown() const;
 
     /**
         Returns @true if the user is selecting grid cells, @false -- if
@@ -1144,7 +1182,7 @@ public:
     /**
         Returns @true if the Shift key was down at the time of the event.
     */
-    bool ShiftDown();
+    bool ShiftDown() const;
 };
 
 
@@ -1174,7 +1212,7 @@ public:
     /**
         Parameters string format is "width,precision"
     */
-    void SetParameters(const wxString& params);
+    virtual void SetParameters(const wxString& params);
 };
 
 
@@ -1190,7 +1228,7 @@ public:
     will set up default instances of the other classes and manage them for you.
     For more complex applications you can derive your own classes for custom
     grid views, grid data tables, cell editors and renderers. The @ref
-    overview_gridoverview has examples of simple and more complex applications,
+    overview_grid "wxGrid overview" has examples of simple and more complex applications,
     explains the relationship between the various grid classes and has a
     summary of the keyboard shortcuts and mouse functions provided by wxGrid.
 
@@ -1223,7 +1261,7 @@ public:
     @library{wxadv}
     @category{grid}
 
-    @see @ref overview_gridoverview "wxGrid overview"
+    @see @ref overview_grid "wxGrid overview"
 */
 class wxGrid : public wxScrolledWindow
 {
@@ -1320,6 +1358,26 @@ public:
     */
     bool AppendRows(int numRows = 1, bool updateLabels = true);
 
+    /**
+        Return @true if the horizontal grid lines stop at the last column
+        boundary or @false if they continue to the end of the window.
+
+        The default is to clip grid lines.
+
+        @see ClipHorzGridLines(), AreVertGridLinesClipped()
+     */
+    bool AreHorzGridLinesClipped() const;
+
+    /**
+        Return @true if the vertical grid lines stop at the last row
+        boundary or @false if they continue to the end of the window.
+
+        The default is to clip grid lines.
+
+        @see ClipVertGridLines(), AreHorzGridLinesClipped()
+     */
+    bool AreVertGridLinesClipped() const;
+
     /**
         Automatically sets the height and width of all rows and columns to fit their
         contents.
@@ -1466,6 +1524,30 @@ public:
     */
     void ClearSelection();
 
+    /**
+        Change whether the horizontal grid lines are clipped by the end of the
+        last column.
+
+        By default the grid lines are not drawn beyond the end of the last
+        column but after calling this function with @a clip set to @false they
+        will be drawn across the entire grid window.
+
+        @see AreHorzGridLinesClipped(), ClipVertGridLines()
+     */
+    void ClipHorzGridLines(bool clip);
+
+    /**
+        Change whether the vertical grid lines are clipped by the end of the
+        last row.
+
+        By default the grid lines are not drawn beyond the end of the last
+        row but after calling this function with @a clip set to @false they
+        will be drawn across the entire grid window.
+
+        @see AreVertzGridLinesClipped(), ClipHorzGridLines()
+     */
+    void ClipVertzGridLines(bool clip);
+
     /**
         Creates a grid with the specified initial number of rows and columns.
 
@@ -1578,7 +1660,7 @@ public:
 
         For more information about controlling grid cell attributes see the
         wxGridCellAttr cell attribute class and the
-        @ref overview_gridoverview.
+        @ref overview_grid "wxGrid overview".
     */
     void EnableEditing(bool edit);
 
@@ -1617,7 +1699,7 @@ public:
         without (yet) matching calls to EndBatch(). While
         the grid's batch count is greater than zero the display will not be updated.
     */
-    int GetBatchCount() const;
+    int GetBatchCount();
 
     /**
         Sets the arguments to the horizontal and vertical text alignment values
@@ -1639,8 +1721,8 @@ public:
     /**
         Returns a pointer to the editor for the cell at the specified location.
 
-        See wxGridCellEditor and the @ref overview_gridoverview "wxGrid
-        overview" for more information about cell editors and renderers.
+        See wxGridCellEditor and the @ref overview_grid "wxGrid overview" 
+        for more information about cell editors and renderers.
 
         The caller must call DecRef() on the returned pointer.
     */
@@ -1655,8 +1737,8 @@ public:
         Returns a pointer to the renderer for the grid cell at the specified
         location.
 
-        See wxGridCellRenderer and the @ref overview_gridoverview "wxGrid
-        overview" for more information about cell editors and renderers.
+        See wxGridCellRenderer and the @ref overview_grid "wxGrid overview"
+        for more information about cell editors and renderers.
 
         The caller must call DecRef() on the returned pointer.
     */
@@ -1678,8 +1760,8 @@ public:
         data types (e.g. numeric, boolean or user-defined custom types) then
         you only use this function for those cells that contain string values.
 
-        See wxGridTableBase::CanGetValueAs and the @ref overview_gridoverview
-        "wxGrid overview" for more information.
+        See wxGridTableBase::CanGetValueAs and the @ref overview_grid "wxGrid overview"
+        for more information.
     */
     wxString GetCellValue(int row, int col) const;
     const wxString  GetCellValue(const wxGridCellCoords& coords) const;
@@ -1699,7 +1781,7 @@ public:
 
         See GetRowGridLinePen() for an example.
     */
-    wxPen GetColGridLinePen(int col);
+    virtual wxPen GetColGridLinePen(int col);
 
     /**
         Sets the arguments to the current column label alignment values.
@@ -1804,8 +1886,8 @@ public:
     /**
         Returns a pointer to the current default grid cell editor.
 
-        See wxGridCellEditor and the @ref overview_gridoverview "wxGrid
-        overview" for more information about cell editors and renderers.
+        See wxGridCellEditor and the @ref overview_grid "wxGrid overview"
+        for more information about cell editors and renderers.
     */
     wxGridCellEditor* GetDefaultEditor() const;
 
@@ -1849,13 +1931,13 @@ public:
 
         @see GetColGridLinePen(), GetRowGridLinePen()
     */
-    wxPen GetDefaultGridLinePen();
+    virtual wxPen GetDefaultGridLinePen();
 
     /**
         Returns a pointer to the current default grid cell renderer.
 
-        See wxGridCellRenderer and the @ref overview_gridoverview "wxGrid
-        overview" for more information about cell editors and renderers.
+        See wxGridCellRenderer and the @ref overview_grid "wxGrid overview"
+        for more information about cell editors and renderers.
 
         The caller must call DecRef() on the returned pointer.
     */
@@ -1968,7 +2050,7 @@ public:
            }
         @endcode
     */
-    wxPen GetRowGridLinePen(int row);
+    virtual wxPen GetRowGridLinePen(int row);
 
     /**
         Returns the alignment used for row labels.
@@ -2122,6 +2204,19 @@ public:
     */
     wxGridTableBase *GetTable() const;
 
+    //@{
+    /**
+        Make the given cell current and ensure it is visible.
+
+        This method is equivalent to calling MakeCellVisible() and
+        SetGridCursor() and so, as with the latter, a wxEVT_GRID_SELECT_CELL
+        event is generated by it and the selected cell doesn't change if the
+        event is vetoed.
+     */
+    void GoToCell(int row, int col);
+    void GoToCell(const wxGridCellCoords& coords);
+    //@}
+
     /**
         Returns @true if drawing of grid lines is turned on, @false otherwise.
     */
@@ -2460,8 +2555,8 @@ public:
 
         The grid will take ownership of the pointer.
 
-        See wxGridCellEditor and the @ref overview_gridoverview "wxGrid
-        overview" for more information about cell editors and renderers.
+        See wxGridCellEditor and the @ref overview_grid "wxGrid overview"
+        for more information about cell editors and renderers.
     */
     void SetCellEditor(int row, int col, wxGridCellEditor* editor);
 
@@ -2475,8 +2570,8 @@ public:
 
         The grid will take ownership of the pointer.
 
-        See wxGridCellRenderer and the @ref overview_gridoverview "wxGrid
-        overview" for more information about cell editors and renderers.
+        See wxGridCellRenderer and the @ref overview_grid "wxGrid overview"
+        for more information about cell editors and renderers.
     */
     void SetCellRenderer(int row, int col, wxGridCellRenderer* renderer);
 
@@ -2501,7 +2596,7 @@ public:
         you only use this function for those cells that contain string values.
         The last form is for backward compatibility only.
 
-        See wxGridTableBase::CanSetValueAs and the @ref overview_gridoverview
+        See wxGridTableBase::CanSetValueAs and the @ref overview_grid
         "wxGrid overview" for more information.
     */
     void SetCellValue(int row, int col, const wxString& s);
@@ -2513,7 +2608,7 @@ public:
         Sets the cell attributes for all cells in the specified column.
 
         For more information about controlling grid cell attributes see the
-        wxGridCellAttr cell attribute class and the @ref overview_gridoverview.
+        wxGridCellAttr cell attribute class and the @ref overview_grid "wxGrid overview".
     */
     void SetColAttr(int col, wxGridCellAttr* attr);
 
@@ -2533,7 +2628,7 @@ public:
         cells in this column, it does associate the renderer and editor used
         for the cells of the specified type with them.
 
-        See the @ref overview_gridoverview "wxGrid overview" for more
+        See the @ref overview_grid "wxGrid overview" for more
         information on working with custom data types.
     */
     void SetColFormatCustom(int col, const wxString& typeName);
@@ -2659,8 +2754,8 @@ public:
 
         The grid will take ownership of the pointer.
 
-        See wxGridCellEditor and the @ref overview_gridoverview "wxGrid
-        overview" for more information about cell editors and renderers.
+        See wxGridCellEditor and the @ref overview_grid "wxGrid overview"
+        for more information about cell editors and renderers.
     */
     void SetDefaultEditor(wxGridCellEditor* editor);
 
@@ -2669,8 +2764,8 @@ public:
 
         The grid will take ownership of the pointer.
 
-        See wxGridCellRenderer and the @ref overview_gridoverview "wxGrid
-        overview" for more information about cell editors and renderers.
+        See wxGridCellRenderer and the @ref overview_grid "wxGrid overview" 
+        for more information about cell editors and renderers.
     */
     void SetDefaultRenderer(wxGridCellRenderer* renderer);
 
@@ -2685,12 +2780,22 @@ public:
     */
     void SetDefaultRowSize(int height, bool resizeExistingRows = false);
 
+    //@{
     /**
         Set the grid cursor to the specified cell.
 
-        This function calls MakeCellVisible().
+        The grid cursor indicates the current cell and can be moved by the user
+        using the arrow keys or the mouse.
+
+        Calling this function generates a wxEVT_GRID_SELECT_CELL event and if
+        the event handler vetoes this event, the cursor is not moved.
+
+        This function doesn't make the target call visible, use GoToCell() to
+        do this.
     */
     void SetGridCursor(int row, int col);
+    void SetGridCursor(const wxGridCellCoords& coords);
+    //@}
 
     /**
         Sets the colour used to draw grid lines.
@@ -2875,6 +2980,27 @@ public:
     */
     int XToEdgeOfCol(int x) const;
 
+    //@{
+    /**
+        Translates logical pixel coordinates to the grid cell coordinates.
+
+        Notice that this function expects logical coordinates on input so if
+        you use this function in a mouse event handler you need to translate
+        the mouse position, which is expressed in device coordinates, to
+        logical ones.
+
+        @see XToCol(), YToRow()
+     */
+
+    // XYToCell(int, int, wxGridCellCoords&) overload is intentionally
+    // undocumented, using it is ugly and non-const reference parameters are
+    // not used in wxWidgets API
+
+    wxGridCellCoords XYToCell(int x, int y) const;
+    wxGridCellCoords XYToCell(const wxPoint& pos) const;
+
+    //@}
+
     /**
         Returns the row whose bottom edge is close to the given logical y
         position.