more grid folding: got rid of duplicate version of methods for finding the closest row/column edge, appending/inserting/deleting rows/columns, and moving cursor vertically/horizontally
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55663 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -87,6 +87,7 @@ class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
|
|||||||
class wxGridOperations;
|
class wxGridOperations;
|
||||||
class wxGridRowOperations;
|
class wxGridRowOperations;
|
||||||
class wxGridColumnOperations;
|
class wxGridColumnOperations;
|
||||||
|
class wxGridDirectionOperations;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// macros
|
// macros
|
||||||
@@ -829,14 +830,72 @@ private:
|
|||||||
DECLARE_NO_COPY_CLASS(wxGridCellAttrProvider)
|
DECLARE_NO_COPY_CLASS(wxGridCellAttrProvider)
|
||||||
};
|
};
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
// ----------------------------------------------------------------------------
|
||||||
//
|
// wxGridCellCoords: location of a cell in the grid
|
||||||
// Grid table classes
|
// ----------------------------------------------------------------------------
|
||||||
//
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
class WXDLLIMPEXP_ADV wxGridCellCoords
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxGridCellCoords() { m_row = m_col = -1; }
|
||||||
|
wxGridCellCoords( int r, int c ) { m_row = r; m_col = c; }
|
||||||
|
|
||||||
|
// default copy ctor is ok
|
||||||
|
|
||||||
|
int GetRow() const { return m_row; }
|
||||||
|
void SetRow( int n ) { m_row = n; }
|
||||||
|
int GetCol() const { return m_col; }
|
||||||
|
void SetCol( int n ) { m_col = n; }
|
||||||
|
void Set( int row, int col ) { m_row = row; m_col = col; }
|
||||||
|
|
||||||
|
wxGridCellCoords& operator=( const wxGridCellCoords& other )
|
||||||
|
{
|
||||||
|
if ( &other != this )
|
||||||
|
{
|
||||||
|
m_row=other.m_row;
|
||||||
|
m_col=other.m_col;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const wxGridCellCoords& other ) const
|
||||||
|
{
|
||||||
|
return (m_row == other.m_row && m_col == other.m_col);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator!=( const wxGridCellCoords& other ) const
|
||||||
|
{
|
||||||
|
return (m_row != other.m_row || m_col != other.m_col);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator!() const
|
||||||
|
{
|
||||||
|
return (m_row == -1 && m_col == -1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_row;
|
||||||
|
int m_col;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class WXDLLIMPEXP_ADV wxGridTableBase : public wxObject, public wxClientDataContainer
|
// For comparisons...
|
||||||
|
//
|
||||||
|
extern WXDLLIMPEXP_ADV wxGridCellCoords wxGridNoCellCoords;
|
||||||
|
extern WXDLLIMPEXP_ADV wxRect wxGridNoCellRect;
|
||||||
|
|
||||||
|
// An array of cell coords...
|
||||||
|
//
|
||||||
|
WX_DECLARE_OBJARRAY_WITH_DECL(wxGridCellCoords, wxGridCellCoordsArray,
|
||||||
|
class WXDLLIMPEXP_ADV);
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Grid table classes
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// the abstract base class
|
||||||
|
class WXDLLIMPEXP_ADV wxGridTableBase : public wxObject,
|
||||||
|
public wxClientDataContainer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxGridTableBase();
|
wxGridTableBase();
|
||||||
@@ -847,6 +906,12 @@ public:
|
|||||||
virtual int GetNumberRows() = 0;
|
virtual int GetNumberRows() = 0;
|
||||||
virtual int GetNumberCols() = 0;
|
virtual int GetNumberCols() = 0;
|
||||||
virtual bool IsEmptyCell( int row, int col ) = 0;
|
virtual bool IsEmptyCell( int row, int col ) = 0;
|
||||||
|
|
||||||
|
bool IsEmpty(const wxGridCellCoords& coord)
|
||||||
|
{
|
||||||
|
return IsEmptyCell(coord.GetRow(), coord.GetCol());
|
||||||
|
}
|
||||||
|
|
||||||
virtual wxString GetValue( int row, int col ) = 0;
|
virtual wxString GetValue( int row, int col ) = 0;
|
||||||
virtual void SetValue( int row, int col, const wxString& value ) = 0;
|
virtual void SetValue( int row, int col, const wxString& value ) = 0;
|
||||||
|
|
||||||
@@ -1028,65 +1093,6 @@ private:
|
|||||||
// Grid view classes
|
// Grid view classes
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// wxGridCellCoords: location of a cell in the grid
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
class WXDLLIMPEXP_ADV wxGridCellCoords
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
wxGridCellCoords() { m_row = m_col = -1; }
|
|
||||||
wxGridCellCoords( int r, int c ) { m_row = r; m_col = c; }
|
|
||||||
|
|
||||||
// default copy ctor is ok
|
|
||||||
|
|
||||||
int GetRow() const { return m_row; }
|
|
||||||
void SetRow( int n ) { m_row = n; }
|
|
||||||
int GetCol() const { return m_col; }
|
|
||||||
void SetCol( int n ) { m_col = n; }
|
|
||||||
void Set( int row, int col ) { m_row = row; m_col = col; }
|
|
||||||
|
|
||||||
wxGridCellCoords& operator=( const wxGridCellCoords& other )
|
|
||||||
{
|
|
||||||
if ( &other != this )
|
|
||||||
{
|
|
||||||
m_row=other.m_row;
|
|
||||||
m_col=other.m_col;
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator==( const wxGridCellCoords& other ) const
|
|
||||||
{
|
|
||||||
return (m_row == other.m_row && m_col == other.m_col);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator!=( const wxGridCellCoords& other ) const
|
|
||||||
{
|
|
||||||
return (m_row != other.m_row || m_col != other.m_col);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator!() const
|
|
||||||
{
|
|
||||||
return (m_row == -1 && m_col == -1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
int m_row;
|
|
||||||
int m_col;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// For comparisons...
|
|
||||||
//
|
|
||||||
extern WXDLLIMPEXP_ADV wxGridCellCoords wxGridNoCellCoords;
|
|
||||||
extern WXDLLIMPEXP_ADV wxRect wxGridNoCellRect;
|
|
||||||
|
|
||||||
// An array of cell coords...
|
|
||||||
//
|
|
||||||
WX_DECLARE_OBJARRAY_WITH_DECL(wxGridCellCoords, wxGridCellCoordsArray,
|
|
||||||
class WXDLLIMPEXP_ADV);
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxGrid
|
// wxGrid
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -1172,12 +1178,36 @@ public:
|
|||||||
wxGridTableBase * GetTable() const { return m_table; }
|
wxGridTableBase * GetTable() const { return m_table; }
|
||||||
|
|
||||||
void ClearGrid();
|
void ClearGrid();
|
||||||
bool InsertRows( int pos = 0, int numRows = 1, bool updateLabels = true );
|
bool InsertRows(int pos = 0, int numRows = 1, bool updateLabels = true)
|
||||||
bool AppendRows( int numRows = 1, bool updateLabels = true );
|
{
|
||||||
bool DeleteRows( int pos = 0, int numRows = 1, bool updateLabels = true );
|
return DoModifyLines(&wxGridTableBase::InsertRows,
|
||||||
bool InsertCols( int pos = 0, int numCols = 1, bool updateLabels = true );
|
pos, numRows, updateLabels);
|
||||||
bool AppendCols( int numCols = 1, bool updateLabels = true );
|
}
|
||||||
bool DeleteCols( int pos = 0, int numCols = 1, bool updateLabels = true );
|
bool InsertCols(int pos = 0, int numCols = 1, bool updateLabels = true)
|
||||||
|
{
|
||||||
|
return DoModifyLines(&wxGridTableBase::InsertCols,
|
||||||
|
pos, numCols, updateLabels);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AppendRows(int numRows = 1, bool updateLabels = true)
|
||||||
|
{
|
||||||
|
return DoAppendLines(&wxGridTableBase::AppendRows, numRows, updateLabels);
|
||||||
|
}
|
||||||
|
bool AppendCols(int numCols = 1, bool updateLabels = true)
|
||||||
|
{
|
||||||
|
return DoAppendLines(&wxGridTableBase::AppendCols, numCols, updateLabels);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DeleteRows(int pos = 0, int numRows = 1, bool updateLabels = true)
|
||||||
|
{
|
||||||
|
return DoModifyLines(&wxGridTableBase::DeleteRows,
|
||||||
|
pos, numRows, updateLabels);
|
||||||
|
}
|
||||||
|
bool DeleteCols(int pos = 0, int numCols = 1, bool updateLabels = true)
|
||||||
|
{
|
||||||
|
return DoModifyLines(&wxGridTableBase::DeleteCols,
|
||||||
|
pos, numCols, updateLabels);
|
||||||
|
}
|
||||||
|
|
||||||
void DrawGridCellArea( wxDC& dc , const wxGridCellCoordsArray& cells );
|
void DrawGridCellArea( wxDC& dc , const wxGridCellCoordsArray& cells );
|
||||||
void DrawGridSpace( wxDC& dc );
|
void DrawGridSpace( wxDC& dc );
|
||||||
@@ -2070,7 +2100,22 @@ private:
|
|||||||
void DoEndDragResizeLine(const wxGridOperations& oper);
|
void DoEndDragResizeLine(const wxGridOperations& oper);
|
||||||
int PosToLine(int pos, bool clipToMinMax,
|
int PosToLine(int pos, bool clipToMinMax,
|
||||||
const wxGridOperations& oper) const;
|
const wxGridOperations& oper) const;
|
||||||
|
int PosToEdgeOfLine(int pos, const wxGridOperations& oper) const;
|
||||||
|
|
||||||
|
bool DoMoveCursor(bool expandSelection,
|
||||||
|
const wxGridDirectionOperations& diroper);
|
||||||
|
bool DoMoveCursorByPage(const wxGridDirectionOperations& diroper);
|
||||||
|
bool DoMoveCursorByBlock(bool expandSelection,
|
||||||
|
const wxGridDirectionOperations& diroper);
|
||||||
|
void AdvanceToNextNonEmpty(wxGridCellCoords& coords,
|
||||||
|
const wxGridDirectionOperations& diroper);
|
||||||
|
|
||||||
|
// common part of {Insert,Delete}{Rows,Cols}
|
||||||
|
bool DoModifyLines(bool (wxGridTableBase::*funcModify)(size_t, size_t),
|
||||||
|
int pos, int num, bool updateLabels);
|
||||||
|
// Append{Rows,Cols} is a bit different because of one less parameter
|
||||||
|
bool DoAppendLines(bool (wxGridTableBase::*funcAppend)(size_t),
|
||||||
|
int num, bool updateLabels);
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS( wxGrid )
|
DECLARE_DYNAMIC_CLASS( wxGrid )
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
|
@@ -101,6 +101,14 @@ public:
|
|||||||
/// Must be overridden to implement testing for empty cells.
|
/// Must be overridden to implement testing for empty cells.
|
||||||
virtual bool IsEmptyCell(int row, int col) = 0;
|
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.
|
/// Must be overridden to implement accessing the table values as text.
|
||||||
virtual wxString GetValue(int row, int col) = 0;
|
virtual wxString GetValue(int row, int col) = 0;
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user