re-checking in files in Unix mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5827 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -63,9 +63,7 @@ class WXDLLEXPORT wxGrid;
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridTableBase : public wxObject
|
class WXDLLEXPORT wxGridTableBase : public wxObject
|
||||||
{
|
{
|
||||||
wxGrid * m_view;
|
public:
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridTableBase();
|
wxGridTableBase();
|
||||||
virtual ~wxGridTableBase();
|
virtual ~wxGridTableBase();
|
||||||
|
|
||||||
@@ -76,7 +74,7 @@ class WXDLLEXPORT wxGridTableBase : public wxObject
|
|||||||
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& s ) = 0;
|
virtual void SetValue( int row, int col, const wxString& s ) = 0;
|
||||||
virtual bool IsEmptyCell( int row, int col ) = 0;
|
virtual bool IsEmptyCell( int row, int col ) = 0;
|
||||||
|
|
||||||
// Overriding these is optional
|
// Overriding these is optional
|
||||||
//
|
//
|
||||||
virtual void SetView( wxGrid *grid ) { m_view = grid; }
|
virtual void SetView( wxGrid *grid ) { m_view = grid; }
|
||||||
@@ -94,7 +92,10 @@ class WXDLLEXPORT wxGridTableBase : public wxObject
|
|||||||
virtual wxString GetColLabelValue( int col );
|
virtual wxString GetColLabelValue( int col );
|
||||||
virtual void SetRowLabelValue( int WXUNUSED(row), const wxString& ) {}
|
virtual void SetRowLabelValue( int WXUNUSED(row), const wxString& ) {}
|
||||||
virtual void SetColLabelValue( int WXUNUSED(col), const wxString& ) {}
|
virtual void SetColLabelValue( int WXUNUSED(col), const wxString& ) {}
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxGrid * m_view;
|
||||||
|
|
||||||
DECLARE_ABSTRACT_CLASS( wxGridTableBase );
|
DECLARE_ABSTRACT_CLASS( wxGridTableBase );
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -102,7 +103,8 @@ class WXDLLEXPORT wxGridTableBase : public wxObject
|
|||||||
|
|
||||||
// IDs for messages sent from grid table to view
|
// IDs for messages sent from grid table to view
|
||||||
//
|
//
|
||||||
enum wxGridTableRequest {
|
enum wxGridTableRequest
|
||||||
|
{
|
||||||
wxGRIDTABLE_REQUEST_VIEW_GET_VALUES = 2000,
|
wxGRIDTABLE_REQUEST_VIEW_GET_VALUES = 2000,
|
||||||
wxGRIDTABLE_REQUEST_VIEW_SEND_VALUES,
|
wxGRIDTABLE_REQUEST_VIEW_SEND_VALUES,
|
||||||
wxGRIDTABLE_NOTIFY_ROWS_INSERTED,
|
wxGRIDTABLE_NOTIFY_ROWS_INSERTED,
|
||||||
@@ -115,12 +117,7 @@ enum wxGridTableRequest {
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridTableMessage
|
class WXDLLEXPORT wxGridTableMessage
|
||||||
{
|
{
|
||||||
wxGridTableBase *m_table;
|
public:
|
||||||
int m_id;
|
|
||||||
int m_comInt1;
|
|
||||||
int m_comInt2;
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridTableMessage();
|
wxGridTableMessage();
|
||||||
wxGridTableMessage( wxGridTableBase *table, int id,
|
wxGridTableMessage( wxGridTableBase *table, int id,
|
||||||
int comInt1 = -1,
|
int comInt1 = -1,
|
||||||
@@ -133,7 +130,13 @@ class WXDLLEXPORT wxGridTableMessage
|
|||||||
void SetCommandInt( int comInt1 ) { m_comInt1 = comInt1; }
|
void SetCommandInt( int comInt1 ) { m_comInt1 = comInt1; }
|
||||||
int GetCommandInt() { return m_comInt1; }
|
int GetCommandInt() { return m_comInt1; }
|
||||||
void SetCommandInt2( int comInt2 ) { m_comInt2 = comInt2; }
|
void SetCommandInt2( int comInt2 ) { m_comInt2 = comInt2; }
|
||||||
int GetCommandInt2() { return m_comInt2; }
|
int GetCommandInt2() { return m_comInt2; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxGridTableBase *m_table;
|
||||||
|
int m_id;
|
||||||
|
int m_comInt1;
|
||||||
|
int m_comInt2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -154,15 +157,7 @@ WX_DECLARE_EXPORTED_OBJARRAY(wxArrayString, wxGridStringArray);
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridStringTable : public wxGridTableBase
|
class WXDLLEXPORT wxGridStringTable : public wxGridTableBase
|
||||||
{
|
{
|
||||||
wxGridStringArray m_data;
|
public:
|
||||||
|
|
||||||
// These only get used if you set your own labels, otherwise the
|
|
||||||
// GetRow/ColLabelValue functions return wxGridTableBase defaults
|
|
||||||
//
|
|
||||||
wxArrayString m_rowLabels;
|
|
||||||
wxArrayString m_colLabels;
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridStringTable();
|
wxGridStringTable();
|
||||||
wxGridStringTable( int numRows, int numCols );
|
wxGridStringTable( int numRows, int numCols );
|
||||||
~wxGridStringTable();
|
~wxGridStringTable();
|
||||||
@@ -174,7 +169,7 @@ class WXDLLEXPORT wxGridStringTable : public wxGridTableBase
|
|||||||
wxString GetValue( int row, int col );
|
wxString GetValue( int row, int col );
|
||||||
void SetValue( int row, int col, const wxString& s );
|
void SetValue( int row, int col, const wxString& s );
|
||||||
bool IsEmptyCell( int row, int col );
|
bool IsEmptyCell( int row, int col );
|
||||||
|
|
||||||
// overridden functions from wxGridTableBase
|
// overridden functions from wxGridTableBase
|
||||||
//
|
//
|
||||||
void Clear();
|
void Clear();
|
||||||
@@ -189,7 +184,16 @@ class WXDLLEXPORT wxGridStringTable : public wxGridTableBase
|
|||||||
void SetColLabelValue( int col, const wxString& );
|
void SetColLabelValue( int col, const wxString& );
|
||||||
wxString GetRowLabelValue( int row );
|
wxString GetRowLabelValue( int row );
|
||||||
wxString GetColLabelValue( int col );
|
wxString GetColLabelValue( int col );
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxGridStringArray m_data;
|
||||||
|
|
||||||
|
// These only get used if you set your own labels, otherwise the
|
||||||
|
// GetRow/ColLabelValue functions return wxGridTableBase defaults
|
||||||
|
//
|
||||||
|
wxArrayString m_rowLabels;
|
||||||
|
wxArrayString m_colLabels;
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS( wxGridStringTable )
|
DECLARE_DYNAMIC_CLASS( wxGridStringTable )
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -203,10 +207,7 @@ class WXDLLEXPORT wxGridStringTable : public wxGridTableBase
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridCellCoords
|
class WXDLLEXPORT wxGridCellCoords
|
||||||
{
|
{
|
||||||
long m_row;
|
public:
|
||||||
long m_col;
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridCellCoords() { m_row = m_col = -1; }
|
wxGridCellCoords() { m_row = m_col = -1; }
|
||||||
wxGridCellCoords( int r, int c ) { m_row = r; m_col = c; }
|
wxGridCellCoords( int r, int c ) { m_row = r; m_col = c; }
|
||||||
|
|
||||||
@@ -217,7 +218,7 @@ class WXDLLEXPORT wxGridCellCoords
|
|||||||
long GetCol() const { return m_col; }
|
long GetCol() const { return m_col; }
|
||||||
void SetCol( long n ) { m_col = n; }
|
void SetCol( long n ) { m_col = n; }
|
||||||
void Set( long row, long col ) { m_row = row; m_col = col; }
|
void Set( long row, long col ) { m_row = row; m_col = col; }
|
||||||
|
|
||||||
wxGridCellCoords& operator=( const wxGridCellCoords& other )
|
wxGridCellCoords& operator=( const wxGridCellCoords& other )
|
||||||
{
|
{
|
||||||
if ( &other != this )
|
if ( &other != this )
|
||||||
@@ -242,6 +243,10 @@ class WXDLLEXPORT wxGridCellCoords
|
|||||||
{
|
{
|
||||||
return (m_row == -1 && m_col == -1 );
|
return (m_row == -1 && m_col == -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
long m_row;
|
||||||
|
long m_col;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -257,22 +262,12 @@ WX_DECLARE_EXPORTED_OBJARRAY(wxGridCellCoords, wxGridCellCoordsArray);
|
|||||||
|
|
||||||
|
|
||||||
// This set of classes is to provide for the use of different types of
|
// This set of classes is to provide for the use of different types of
|
||||||
// cell edit controls in the grid while avoiding the wx class info
|
// cell edit controls in the grid while avoiding the wx class info
|
||||||
// system in deference to wxPython
|
// system in deference to wxPython
|
||||||
|
|
||||||
class WXDLLEXPORT wxGridTextCtrl : public wxTextCtrl
|
class WXDLLEXPORT wxGridTextCtrl : public wxTextCtrl
|
||||||
{
|
{
|
||||||
wxGrid *m_grid;
|
public:
|
||||||
|
|
||||||
// TRUE for controls placed over cells,
|
|
||||||
// FALSE for a control on a grid control panel
|
|
||||||
bool m_isCellControl;
|
|
||||||
|
|
||||||
wxString startValue;
|
|
||||||
|
|
||||||
void OnKeyDown( wxKeyEvent& );
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridTextCtrl() {}
|
wxGridTextCtrl() {}
|
||||||
wxGridTextCtrl( wxWindow *,
|
wxGridTextCtrl( wxWindow *,
|
||||||
wxGrid *,
|
wxGrid *,
|
||||||
@@ -285,7 +280,18 @@ class WXDLLEXPORT wxGridTextCtrl : public wxTextCtrl
|
|||||||
|
|
||||||
void SetStartValue( const wxString& );
|
void SetStartValue( const wxString& );
|
||||||
wxString GetStartValue() { return startValue; }
|
wxString GetStartValue() { return startValue; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxGrid *m_grid;
|
||||||
|
|
||||||
|
// TRUE for controls placed over cells,
|
||||||
|
// FALSE for a control on a grid control panel
|
||||||
|
bool m_isCellControl;
|
||||||
|
|
||||||
|
wxString startValue;
|
||||||
|
|
||||||
|
void OnKeyDown( wxKeyEvent& );
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS( wxGridTextCtrl )
|
DECLARE_DYNAMIC_CLASS( wxGridTextCtrl )
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
@@ -293,17 +299,18 @@ class WXDLLEXPORT wxGridTextCtrl : public wxTextCtrl
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridRowLabelWindow : public wxWindow
|
class WXDLLEXPORT wxGridRowLabelWindow : public wxWindow
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
wxGridRowLabelWindow() { m_owner = (wxGrid *)NULL; }
|
||||||
|
wxGridRowLabelWindow( wxGrid *parent, wxWindowID id,
|
||||||
|
const wxPoint &pos, const wxSize &size );
|
||||||
|
|
||||||
|
private:
|
||||||
wxGrid *m_owner;
|
wxGrid *m_owner;
|
||||||
|
|
||||||
void OnPaint( wxPaintEvent& event );
|
void OnPaint( wxPaintEvent& event );
|
||||||
void OnMouseEvent( wxMouseEvent& event );
|
void OnMouseEvent( wxMouseEvent& event );
|
||||||
void OnKeyDown( wxKeyEvent& event );
|
void OnKeyDown( wxKeyEvent& event );
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridRowLabelWindow() {}
|
|
||||||
wxGridRowLabelWindow( wxGrid *parent, wxWindowID id,
|
|
||||||
const wxPoint &pos, const wxSize &size );
|
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxGridRowLabelWindow)
|
DECLARE_DYNAMIC_CLASS(wxGridRowLabelWindow)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
@@ -311,17 +318,18 @@ public:
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridColLabelWindow : public wxWindow
|
class WXDLLEXPORT wxGridColLabelWindow : public wxWindow
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
wxGridColLabelWindow() { m_owner = (wxGrid *)NULL; }
|
||||||
|
wxGridColLabelWindow( wxGrid *parent, wxWindowID id,
|
||||||
|
const wxPoint &pos, const wxSize &size );
|
||||||
|
|
||||||
|
private:
|
||||||
wxGrid *m_owner;
|
wxGrid *m_owner;
|
||||||
|
|
||||||
void OnPaint( wxPaintEvent &event );
|
void OnPaint( wxPaintEvent &event );
|
||||||
void OnMouseEvent( wxMouseEvent& event );
|
void OnMouseEvent( wxMouseEvent& event );
|
||||||
void OnKeyDown( wxKeyEvent& event );
|
void OnKeyDown( wxKeyEvent& event );
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridColLabelWindow() {}
|
|
||||||
wxGridColLabelWindow( wxGrid *parent, wxWindowID id,
|
|
||||||
const wxPoint &pos, const wxSize &size );
|
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxGridColLabelWindow)
|
DECLARE_DYNAMIC_CLASS(wxGridColLabelWindow)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
@@ -329,16 +337,17 @@ public:
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridCornerLabelWindow : public wxWindow
|
class WXDLLEXPORT wxGridCornerLabelWindow : public wxWindow
|
||||||
{
|
{
|
||||||
wxGrid *m_owner;
|
public:
|
||||||
|
wxGridCornerLabelWindow() { m_owner = (wxGrid *)NULL; }
|
||||||
void OnMouseEvent( wxMouseEvent& event );
|
|
||||||
void OnKeyDown( wxKeyEvent& event );
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridCornerLabelWindow() {}
|
|
||||||
wxGridCornerLabelWindow( wxGrid *parent, wxWindowID id,
|
wxGridCornerLabelWindow( wxGrid *parent, wxWindowID id,
|
||||||
const wxPoint &pos, const wxSize &size );
|
const wxPoint &pos, const wxSize &size );
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxGrid *m_owner;
|
||||||
|
|
||||||
|
void OnMouseEvent( wxMouseEvent& event );
|
||||||
|
void OnKeyDown( wxKeyEvent& event );
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxGridCornerLabelWindow)
|
DECLARE_DYNAMIC_CLASS(wxGridCornerLabelWindow)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
@@ -347,6 +356,23 @@ class WXDLLEXPORT wxGridCornerLabelWindow : public wxWindow
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridWindow : public wxPanel
|
class WXDLLEXPORT wxGridWindow : public wxPanel
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
wxGridWindow()
|
||||||
|
{
|
||||||
|
m_owner = (wxGrid *)NULL;
|
||||||
|
m_rowLabelWin = (wxGridRowLabelWindow *)NULL;
|
||||||
|
m_colLabelWin = (wxGridColLabelWindow *)NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxGridWindow( wxGrid *parent,
|
||||||
|
wxGridRowLabelWindow *rowLblWin,
|
||||||
|
wxGridColLabelWindow *colLblWin,
|
||||||
|
wxWindowID id, const wxPoint &pos, const wxSize &size );
|
||||||
|
~wxGridWindow();
|
||||||
|
|
||||||
|
void ScrollWindow( int dx, int dy, const wxRect *rect );
|
||||||
|
|
||||||
|
private:
|
||||||
wxGrid *m_owner;
|
wxGrid *m_owner;
|
||||||
wxGridRowLabelWindow *m_rowLabelWin;
|
wxGridRowLabelWindow *m_rowLabelWin;
|
||||||
wxGridColLabelWindow *m_colLabelWin;
|
wxGridColLabelWindow *m_colLabelWin;
|
||||||
@@ -355,16 +381,6 @@ class WXDLLEXPORT wxGridWindow : public wxPanel
|
|||||||
void OnMouseEvent( wxMouseEvent& event );
|
void OnMouseEvent( wxMouseEvent& event );
|
||||||
void OnKeyDown( wxKeyEvent& );
|
void OnKeyDown( wxKeyEvent& );
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridWindow() {}
|
|
||||||
wxGridWindow( wxGrid *parent,
|
|
||||||
wxGridRowLabelWindow *rowLblWin,
|
|
||||||
wxGridColLabelWindow *colLblWin,
|
|
||||||
wxWindowID id, const wxPoint &pos, const wxSize &size );
|
|
||||||
~wxGridWindow();
|
|
||||||
|
|
||||||
void ScrollWindow( int dx, int dy, const wxRect *rect );
|
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxGridWindow)
|
DECLARE_DYNAMIC_CLASS(wxGridWindow)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
@@ -373,130 +389,10 @@ public:
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
||||||
{
|
{
|
||||||
protected:
|
public:
|
||||||
bool m_created;
|
|
||||||
|
|
||||||
wxGridWindow *m_gridWin;
|
|
||||||
wxGridRowLabelWindow *m_rowLabelWin;
|
|
||||||
wxGridColLabelWindow *m_colLabelWin;
|
|
||||||
wxGridCornerLabelWindow *m_cornerLabelWin;
|
|
||||||
|
|
||||||
wxBoxSizer *m_mainSizer;
|
|
||||||
wxBoxSizer *m_topSizer;
|
|
||||||
wxBoxSizer *m_middleSizer;
|
|
||||||
|
|
||||||
wxGridTableBase *m_table;
|
|
||||||
|
|
||||||
int m_left;
|
|
||||||
int m_top;
|
|
||||||
int m_right;
|
|
||||||
int m_bottom;
|
|
||||||
|
|
||||||
int m_numRows;
|
|
||||||
int m_numCols;
|
|
||||||
|
|
||||||
wxGridCellCoords m_currentCellCoords;
|
|
||||||
|
|
||||||
wxGridCellCoords m_selectedTopLeft;
|
|
||||||
wxGridCellCoords m_selectedBottomRight;
|
|
||||||
|
|
||||||
int m_defaultRowHeight;
|
|
||||||
wxArrayInt m_rowHeights;
|
|
||||||
wxArrayInt m_rowBottoms;
|
|
||||||
|
|
||||||
int m_defaultColWidth;
|
|
||||||
wxArrayInt m_colWidths;
|
|
||||||
wxArrayInt m_colRights;
|
|
||||||
|
|
||||||
int m_rowLabelWidth;
|
|
||||||
int m_colLabelHeight;
|
|
||||||
|
|
||||||
wxColour m_labelBackgroundColour;
|
|
||||||
wxColour m_labelTextColour;
|
|
||||||
wxFont m_labelFont;
|
|
||||||
|
|
||||||
int m_rowLabelHorizAlign;
|
|
||||||
int m_rowLabelVertAlign;
|
|
||||||
int m_colLabelHorizAlign;
|
|
||||||
int m_colLabelVertAlign;
|
|
||||||
|
|
||||||
bool m_defaultRowLabelValues;
|
|
||||||
bool m_defaultColLabelValues;
|
|
||||||
|
|
||||||
wxColour m_gridLineColour;
|
|
||||||
bool m_gridLinesEnabled;
|
|
||||||
|
|
||||||
wxFont m_defaultCellFont;
|
|
||||||
|
|
||||||
wxGridCellCoordsArray m_cellsExposed;
|
|
||||||
wxArrayInt m_rowsExposed;
|
|
||||||
wxArrayInt m_colsExposed;
|
|
||||||
wxArrayInt m_rowLabelsExposed;
|
|
||||||
wxArrayInt m_colLabelsExposed;
|
|
||||||
|
|
||||||
bool m_inOnKeyDown;
|
|
||||||
int m_batchCount;
|
|
||||||
|
|
||||||
int m_cursorMode;
|
|
||||||
enum { WXGRID_CURSOR_DEFAULT,
|
|
||||||
WXGRID_CURSOR_SELECT_CELL,
|
|
||||||
WXGRID_CURSOR_RESIZE_ROW,
|
|
||||||
WXGRID_CURSOR_RESIZE_COL,
|
|
||||||
WXGRID_CURSOR_SELECT_ROW,
|
|
||||||
WXGRID_CURSOR_SELECT_COL
|
|
||||||
};
|
|
||||||
|
|
||||||
int m_dragLastPos;
|
|
||||||
int m_dragRowOrCol;
|
|
||||||
bool m_isDragging;
|
|
||||||
|
|
||||||
wxGridCellCoords m_selectionStart;
|
|
||||||
|
|
||||||
wxCursor m_rowResizeCursor;
|
|
||||||
wxCursor m_colResizeCursor;
|
|
||||||
|
|
||||||
bool m_editable; // applies to whole grid
|
|
||||||
int m_editCtrlType; // for current cell
|
|
||||||
wxWindow* m_cellEditCtrl;
|
|
||||||
bool m_cellEditCtrlEnabled;
|
|
||||||
|
|
||||||
|
|
||||||
void Create();
|
|
||||||
void Init();
|
|
||||||
void CalcDimensions();
|
|
||||||
bool Redimension( wxGridTableMessage& );
|
|
||||||
|
|
||||||
|
|
||||||
bool SendEvent( const wxEventType,
|
|
||||||
int row, int col,
|
|
||||||
wxMouseEvent& );
|
|
||||||
|
|
||||||
bool SendEvent( const wxEventType,
|
|
||||||
int row, int col );
|
|
||||||
|
|
||||||
|
|
||||||
void OnPaint( wxPaintEvent& );
|
|
||||||
void OnSize( wxSizeEvent& );
|
|
||||||
void OnKeyDown( wxKeyEvent& );
|
|
||||||
|
|
||||||
|
|
||||||
void SetCurrentCell( const wxGridCellCoords& coords );
|
|
||||||
void SetCurrentCell( int row, int col )
|
|
||||||
{ SetCurrentCell( wxGridCellCoords(row, col) ); }
|
|
||||||
|
|
||||||
|
|
||||||
// ------ functions to get/send data (see also public functions)
|
|
||||||
//
|
|
||||||
bool GetModelValues();
|
|
||||||
bool SetModelValues();
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////// Public section ////////////////////
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxGrid()
|
wxGrid()
|
||||||
{ Create(); }
|
{ Create(); }
|
||||||
|
|
||||||
wxGrid( wxWindow *parent,
|
wxGrid( wxWindow *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
@@ -504,33 +400,33 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
long style = 0,
|
long style = 0,
|
||||||
const wxString& name = wxPanelNameStr );
|
const wxString& name = wxPanelNameStr );
|
||||||
|
|
||||||
~wxGrid();
|
~wxGrid();
|
||||||
|
|
||||||
bool CreateGrid( int numRows, int numCols );
|
bool CreateGrid( int numRows, int numCols );
|
||||||
|
|
||||||
|
|
||||||
// ------ grid dimensions
|
// ------ grid dimensions
|
||||||
//
|
//
|
||||||
int GetNumberRows() { return m_numRows; }
|
int GetNumberRows() { return m_numRows; }
|
||||||
int GetNumberCols() { return m_numCols; }
|
int GetNumberCols() { return m_numCols; }
|
||||||
|
|
||||||
|
|
||||||
// ------ display update functions
|
// ------ display update functions
|
||||||
//
|
//
|
||||||
void CalcRowLabelsExposed( wxRegion& reg );
|
void CalcRowLabelsExposed( wxRegion& reg );
|
||||||
void CalcColLabelsExposed( wxRegion& reg );
|
void CalcColLabelsExposed( wxRegion& reg );
|
||||||
void CalcCellsExposed( wxRegion& reg );
|
void CalcCellsExposed( wxRegion& reg );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ------ event handlers
|
// ------ event handlers
|
||||||
//
|
//
|
||||||
void ProcessRowLabelMouseEvent( wxMouseEvent& event );
|
void ProcessRowLabelMouseEvent( wxMouseEvent& event );
|
||||||
void ProcessColLabelMouseEvent( wxMouseEvent& event );
|
void ProcessColLabelMouseEvent( wxMouseEvent& event );
|
||||||
void ProcessCornerLabelMouseEvent( wxMouseEvent& event );
|
void ProcessCornerLabelMouseEvent( wxMouseEvent& event );
|
||||||
void ProcessGridCellMouseEvent( wxMouseEvent& event );
|
void ProcessGridCellMouseEvent( wxMouseEvent& event );
|
||||||
bool ProcessTableMessage( wxGridTableMessage& );
|
bool ProcessTableMessage( wxGridTableMessage& );
|
||||||
|
|
||||||
|
|
||||||
wxGridTableBase * GetTable() const { return m_table; }
|
wxGridTableBase * GetTable() const { return m_table; }
|
||||||
void SetTable( wxGridTableBase *table ) { m_table = table; }
|
void SetTable( wxGridTableBase *table ) { m_table = table; }
|
||||||
|
|
||||||
@@ -540,7 +436,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
bool DeleteRows( int pos = 0, int numRows = 1, bool updateLabels=TRUE );
|
bool DeleteRows( int pos = 0, int numRows = 1, bool updateLabels=TRUE );
|
||||||
bool InsertCols( int pos = 0, int numCols = 1, bool updateLabels=TRUE );
|
bool InsertCols( int pos = 0, int numCols = 1, bool updateLabels=TRUE );
|
||||||
bool AppendCols( int numCols = 1, bool updateLabels=TRUE );
|
bool AppendCols( int numCols = 1, bool updateLabels=TRUE );
|
||||||
bool DeleteCols( int pos = 0, int numCols = 1, bool updateLabels=TRUE );
|
bool DeleteCols( int pos = 0, int numCols = 1, bool updateLabels=TRUE );
|
||||||
|
|
||||||
void DrawGridCellArea( wxDC& dc );
|
void DrawGridCellArea( wxDC& dc );
|
||||||
void DrawCellBorder( wxDC& dc, const wxGridCellCoords& );
|
void DrawCellBorder( wxDC& dc, const wxGridCellCoords& );
|
||||||
@@ -553,7 +449,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
void DrawRowLabel( wxDC& dc, int row );
|
void DrawRowLabel( wxDC& dc, int row );
|
||||||
void DrawColLabels( wxDC& dc );
|
void DrawColLabels( wxDC& dc );
|
||||||
void DrawColLabel( wxDC& dc, int col );
|
void DrawColLabel( wxDC& dc, int col );
|
||||||
|
|
||||||
|
|
||||||
// ------ Cell text drawing functions
|
// ------ Cell text drawing functions
|
||||||
//
|
//
|
||||||
@@ -565,11 +461,11 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
// strings and return the number of lines
|
// strings and return the number of lines
|
||||||
//
|
//
|
||||||
void StringToLines( const wxString& value, wxArrayString& lines );
|
void StringToLines( const wxString& value, wxArrayString& lines );
|
||||||
|
|
||||||
void GetTextBoxSize( wxDC& dc,
|
void GetTextBoxSize( wxDC& dc,
|
||||||
wxArrayString& lines,
|
wxArrayString& lines,
|
||||||
long *width, long *height );
|
long *width, long *height );
|
||||||
|
|
||||||
|
|
||||||
// ------
|
// ------
|
||||||
// Code that does a lot of grid modification can be enclosed
|
// Code that does a lot of grid modification can be enclosed
|
||||||
@@ -586,7 +482,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
bool IsEditable() { return m_editable; }
|
bool IsEditable() { return m_editable; }
|
||||||
void EnableEditing( bool edit );
|
void EnableEditing( bool edit );
|
||||||
|
|
||||||
#if 0 // at the moment the cell edit control is always active
|
#if 0 // at the moment the cell edit control is always active
|
||||||
void EnableCellEditControl( bool enable );
|
void EnableCellEditControl( bool enable );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -598,9 +494,9 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
void SetEditControlValue( const wxString& s = wxEmptyString );
|
void SetEditControlValue( const wxString& s = wxEmptyString );
|
||||||
void SaveEditControlValue();
|
void SaveEditControlValue();
|
||||||
|
|
||||||
|
|
||||||
// ------ grid location functions
|
// ------ grid location functions
|
||||||
// Note that all of these functions work with the logical coordinates of
|
// Note that all of these functions work with the logical coordinates of
|
||||||
// grid cells and labels so you will need to convert from device
|
// grid cells and labels so you will need to convert from device
|
||||||
// coordinates for mouse events etc.
|
// coordinates for mouse events etc.
|
||||||
//
|
//
|
||||||
@@ -617,7 +513,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
|
|
||||||
int GetGridCursorRow() { return m_currentCellCoords.GetRow(); }
|
int GetGridCursorRow() { return m_currentCellCoords.GetRow(); }
|
||||||
int GetGridCursorCol() { return m_currentCellCoords.GetCol(); }
|
int GetGridCursorCol() { return m_currentCellCoords.GetCol(); }
|
||||||
|
|
||||||
// check to see if a cell is either wholly visible (the default arg) or
|
// check to see if a cell is either wholly visible (the default arg) or
|
||||||
// at least partially visible in the grid window
|
// at least partially visible in the grid window
|
||||||
//
|
//
|
||||||
@@ -628,7 +524,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
void MakeCellVisible( const wxGridCellCoords& coords )
|
void MakeCellVisible( const wxGridCellCoords& coords )
|
||||||
{ MakeCellVisible( coords.GetRow(), coords.GetCol() ); }
|
{ MakeCellVisible( coords.GetRow(), coords.GetCol() ); }
|
||||||
|
|
||||||
|
|
||||||
// ------ grid cursor movement functions
|
// ------ grid cursor movement functions
|
||||||
//
|
//
|
||||||
void SetGridCursor( int row, int col )
|
void SetGridCursor( int row, int col )
|
||||||
@@ -645,12 +541,12 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
bool MoveCursorLeftBlock();
|
bool MoveCursorLeftBlock();
|
||||||
bool MoveCursorRightBlock();
|
bool MoveCursorRightBlock();
|
||||||
|
|
||||||
|
|
||||||
// ------ label and gridline formatting
|
// ------ label and gridline formatting
|
||||||
//
|
//
|
||||||
int GetDefaultRowLabelSize() { return WXGRID_DEFAULT_ROW_LABEL_WIDTH; }
|
int GetDefaultRowLabelSize() { return WXGRID_DEFAULT_ROW_LABEL_WIDTH; }
|
||||||
int GetRowLabelSize() { return m_rowLabelWidth; }
|
int GetRowLabelSize() { return m_rowLabelWidth; }
|
||||||
int GetDefaultColLabelSize() { return WXGRID_DEFAULT_COL_LABEL_HEIGHT; }
|
int GetDefaultColLabelSize() { return WXGRID_DEFAULT_COL_LABEL_HEIGHT; }
|
||||||
int GetColLabelSize() { return m_colLabelHeight; }
|
int GetColLabelSize() { return m_colLabelHeight; }
|
||||||
wxColour GetLabelBackgroundColour() { return m_labelBackgroundColour; }
|
wxColour GetLabelBackgroundColour() { return m_labelBackgroundColour; }
|
||||||
wxColour GetLabelTextColour() { return m_labelTextColour; }
|
wxColour GetLabelTextColour() { return m_labelTextColour; }
|
||||||
@@ -690,7 +586,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
wxFont GetCellFont( int row, int col );
|
wxFont GetCellFont( int row, int col );
|
||||||
void GetDefaultCellAlignment( int *horiz, int *vert );
|
void GetDefaultCellAlignment( int *horiz, int *vert );
|
||||||
void GetCellAlignment( int row, int col, int *horiz, int *vert );
|
void GetCellAlignment( int row, int col, int *horiz, int *vert );
|
||||||
|
|
||||||
void SetDefaultRowSize( int height, bool resizeExistingRows = FALSE );
|
void SetDefaultRowSize( int height, bool resizeExistingRows = FALSE );
|
||||||
void SetRowSize( int row, int height );
|
void SetRowSize( int row, int height );
|
||||||
void SetDefaultColSize( int width, bool resizeExistingCols = FALSE );
|
void SetDefaultColSize( int width, bool resizeExistingCols = FALSE );
|
||||||
@@ -721,18 +617,18 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
|
|
||||||
wxString GetCellValue( const wxGridCellCoords& coords )
|
wxString GetCellValue( const wxGridCellCoords& coords )
|
||||||
{ return GetCellValue( coords.GetRow(), coords.GetCol() ); }
|
{ return GetCellValue( coords.GetRow(), coords.GetCol() ); }
|
||||||
|
|
||||||
void SetCellValue( int row, int col, const wxString& s );
|
void SetCellValue( int row, int col, const wxString& s );
|
||||||
void SetCellValue( const wxGridCellCoords& coords, const wxString& s )
|
void SetCellValue( const wxGridCellCoords& coords, const wxString& s )
|
||||||
{ SetCellValue( coords.GetRow(), coords.GetCol(), s ); }
|
{ SetCellValue( coords.GetRow(), coords.GetCol(), s ); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ------ selections of blocks of cells
|
// ------ selections of blocks of cells
|
||||||
//
|
//
|
||||||
void SelectRow( int row, bool addToSelected = FALSE );
|
void SelectRow( int row, bool addToSelected = FALSE );
|
||||||
void SelectCol( int col, bool addToSelected = FALSE );
|
void SelectCol( int col, bool addToSelected = FALSE );
|
||||||
|
|
||||||
void SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol );
|
void SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol );
|
||||||
|
|
||||||
void SelectBlock( const wxGridCellCoords& topLeft,
|
void SelectBlock( const wxGridCellCoords& topLeft,
|
||||||
@@ -741,7 +637,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
bottomRight.GetRow(), bottomRight.GetCol() ); }
|
bottomRight.GetRow(), bottomRight.GetCol() ); }
|
||||||
|
|
||||||
void SelectAll();
|
void SelectAll();
|
||||||
|
|
||||||
bool IsSelection()
|
bool IsSelection()
|
||||||
{ return ( m_selectedTopLeft != wxGridNoCellCoords &&
|
{ return ( m_selectedTopLeft != wxGridNoCellCoords &&
|
||||||
m_selectedBottomRight != wxGridNoCellCoords );
|
m_selectedBottomRight != wxGridNoCellCoords );
|
||||||
@@ -774,8 +670,8 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
// in device coords and clipped to the client size of the grid window.
|
// in device coords and clipped to the client size of the grid window.
|
||||||
//
|
//
|
||||||
wxRect SelectionToDeviceRect();
|
wxRect SelectionToDeviceRect();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ------ For compatibility with previous wxGrid only...
|
// ------ For compatibility with previous wxGrid only...
|
||||||
//
|
//
|
||||||
@@ -791,13 +687,13 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
long style = 0,
|
long style = 0,
|
||||||
const wxString& name = wxPanelNameStr )
|
const wxString& name = wxPanelNameStr )
|
||||||
: wxScrolledWindow( parent, -1, wxPoint(x,y), wxSize(w,h), style, name )
|
: wxScrolledWindow( parent, -1, wxPoint(x,y), wxSize(w,h), style, name )
|
||||||
{
|
{
|
||||||
Create();
|
Create();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetCellValue( const wxString& val, int row, int col )
|
void SetCellValue( const wxString& val, int row, int col )
|
||||||
{ SetCellValue( row, col, val ); }
|
{ SetCellValue( row, col, val ); }
|
||||||
|
|
||||||
void UpdateDimensions()
|
void UpdateDimensions()
|
||||||
{ CalcDimensions(); }
|
{ CalcDimensions(); }
|
||||||
|
|
||||||
@@ -805,28 +701,28 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
int GetCols() { return GetNumberCols(); }
|
int GetCols() { return GetNumberCols(); }
|
||||||
int GetCursorRow() { return GetGridCursorRow(); }
|
int GetCursorRow() { return GetGridCursorRow(); }
|
||||||
int GetCursorColumn() { return GetGridCursorCol(); }
|
int GetCursorColumn() { return GetGridCursorCol(); }
|
||||||
|
|
||||||
int GetScrollPosX() { return 0; }
|
int GetScrollPosX() { return 0; }
|
||||||
int GetScrollPosY() { return 0; }
|
int GetScrollPosY() { return 0; }
|
||||||
|
|
||||||
void SetScrollX( int x ) { }
|
void SetScrollX( int x ) { }
|
||||||
void SetScrollY( int y ) { }
|
void SetScrollY( int y ) { }
|
||||||
|
|
||||||
void SetColumnWidth( int col, int width )
|
void SetColumnWidth( int col, int width )
|
||||||
{ SetColSize( col, width ); }
|
{ SetColSize( col, width ); }
|
||||||
|
|
||||||
int GetColumnWidth( int col )
|
int GetColumnWidth( int col )
|
||||||
{ return GetColSize( col ); }
|
{ return GetColSize( col ); }
|
||||||
|
|
||||||
void SetRowHeight( int row, int height )
|
void SetRowHeight( int row, int height )
|
||||||
{ SetRowSize( row, height ); }
|
{ SetRowSize( row, height ); }
|
||||||
|
|
||||||
int GetRowHeight( int row )
|
int GetRowHeight( int row )
|
||||||
{ return GetRowSize( row ); }
|
{ return GetRowSize( row ); }
|
||||||
|
|
||||||
int GetViewHeight() // returned num whole rows visible
|
int GetViewHeight() // returned num whole rows visible
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
|
|
||||||
int GetViewWidth() // returned num whole cols visible
|
int GetViewWidth() // returned num whole cols visible
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
|
|
||||||
@@ -876,7 +772,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
else
|
else
|
||||||
SetRowLabelValue( pos, val );
|
SetRowLabelValue( pos, val );
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString GetLabelValue( int orientation, int pos)
|
wxString GetLabelValue( int orientation, int pos)
|
||||||
{
|
{
|
||||||
if ( orientation == wxHORIZONTAL )
|
if ( orientation == wxHORIZONTAL )
|
||||||
@@ -885,30 +781,30 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
return GetRowLabelValue( pos );
|
return GetRowLabelValue( pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFont GetCellTextFont() const
|
wxFont GetCellTextFont() const
|
||||||
{ return m_defaultCellFont; }
|
{ return m_defaultCellFont; }
|
||||||
|
|
||||||
wxFont GetCellTextFont(int WXUNUSED(row), int WXUNUSED(col)) const
|
wxFont GetCellTextFont(int WXUNUSED(row), int WXUNUSED(col)) const
|
||||||
{ return m_defaultCellFont; }
|
{ return m_defaultCellFont; }
|
||||||
|
|
||||||
void SetCellTextFont(const wxFont& fnt)
|
void SetCellTextFont(const wxFont& fnt)
|
||||||
{ SetDefaultCellFont( fnt ); }
|
{ SetDefaultCellFont( fnt ); }
|
||||||
|
|
||||||
void SetCellTextFont(const wxFont& fnt, int row, int col)
|
void SetCellTextFont(const wxFont& fnt, int row, int col)
|
||||||
{ SetCellFont( row, col, fnt ); }
|
{ SetCellFont( row, col, fnt ); }
|
||||||
|
|
||||||
void SetCellTextColour(const wxColour& val, int row, int col)
|
void SetCellTextColour(const wxColour& val, int row, int col)
|
||||||
{ SetCellTextColour( row, col, val ); }
|
{ SetCellTextColour( row, col, val ); }
|
||||||
|
|
||||||
void SetCellTextColour(const wxColour& col)
|
void SetCellTextColour(const wxColour& col)
|
||||||
{ SetDefaultCellTextColour( col ); }
|
{ SetDefaultCellTextColour( col ); }
|
||||||
|
|
||||||
void SetCellBackgroundColour(const wxColour& col)
|
void SetCellBackgroundColour(const wxColour& col)
|
||||||
{ SetDefaultCellBackgroundColour( col ); }
|
{ SetDefaultCellBackgroundColour( col ); }
|
||||||
|
|
||||||
void SetCellBackgroundColour(const wxColour& colour, int row, int col)
|
void SetCellBackgroundColour(const wxColour& colour, int row, int col)
|
||||||
{ SetCellBackgroundColour( row, col, colour ); }
|
{ SetCellBackgroundColour( row, col, colour ); }
|
||||||
|
|
||||||
bool GetEditable() { return IsEditable(); }
|
bool GetEditable() { return IsEditable(); }
|
||||||
void SetEditable( bool edit = TRUE ) { EnableEditing( edit ); }
|
void SetEditable( bool edit = TRUE ) { EnableEditing( edit ); }
|
||||||
bool GetEditInPlace() { return IsCellEditControlEnabled(); }
|
bool GetEditInPlace() { return IsCellEditControlEnabled(); }
|
||||||
@@ -922,7 +818,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
void SetDividerPen(const wxPen& WXUNUSED(pen)) { }
|
void SetDividerPen(const wxPen& WXUNUSED(pen)) { }
|
||||||
wxPen& GetDividerPen() const { return wxNullPen; }
|
wxPen& GetDividerPen() const { return wxNullPen; }
|
||||||
void OnActivate(bool WXUNUSED(active)) {}
|
void OnActivate(bool WXUNUSED(active)) {}
|
||||||
|
|
||||||
// ******** End of compatibility functions **********
|
// ******** End of compatibility functions **********
|
||||||
|
|
||||||
|
|
||||||
@@ -937,7 +833,127 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
wxGRID_CHOICE,
|
wxGRID_CHOICE,
|
||||||
wxGRID_COMBOBOX };
|
wxGRID_COMBOBOX };
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool m_created;
|
||||||
|
|
||||||
|
wxGridWindow *m_gridWin;
|
||||||
|
wxGridRowLabelWindow *m_rowLabelWin;
|
||||||
|
wxGridColLabelWindow *m_colLabelWin;
|
||||||
|
wxGridCornerLabelWindow *m_cornerLabelWin;
|
||||||
|
|
||||||
|
wxBoxSizer *m_mainSizer;
|
||||||
|
wxBoxSizer *m_topSizer;
|
||||||
|
wxBoxSizer *m_middleSizer;
|
||||||
|
|
||||||
|
wxGridTableBase *m_table;
|
||||||
|
|
||||||
|
int m_left;
|
||||||
|
int m_top;
|
||||||
|
int m_right;
|
||||||
|
int m_bottom;
|
||||||
|
|
||||||
|
int m_numRows;
|
||||||
|
int m_numCols;
|
||||||
|
|
||||||
|
wxGridCellCoords m_currentCellCoords;
|
||||||
|
|
||||||
|
wxGridCellCoords m_selectedTopLeft;
|
||||||
|
wxGridCellCoords m_selectedBottomRight;
|
||||||
|
|
||||||
|
int m_defaultRowHeight;
|
||||||
|
wxArrayInt m_rowHeights;
|
||||||
|
wxArrayInt m_rowBottoms;
|
||||||
|
|
||||||
|
int m_defaultColWidth;
|
||||||
|
wxArrayInt m_colWidths;
|
||||||
|
wxArrayInt m_colRights;
|
||||||
|
|
||||||
|
int m_rowLabelWidth;
|
||||||
|
int m_colLabelHeight;
|
||||||
|
|
||||||
|
wxColour m_labelBackgroundColour;
|
||||||
|
wxColour m_labelTextColour;
|
||||||
|
wxFont m_labelFont;
|
||||||
|
|
||||||
|
int m_rowLabelHorizAlign;
|
||||||
|
int m_rowLabelVertAlign;
|
||||||
|
int m_colLabelHorizAlign;
|
||||||
|
int m_colLabelVertAlign;
|
||||||
|
|
||||||
|
bool m_defaultRowLabelValues;
|
||||||
|
bool m_defaultColLabelValues;
|
||||||
|
|
||||||
|
wxColour m_gridLineColour;
|
||||||
|
bool m_gridLinesEnabled;
|
||||||
|
|
||||||
|
wxFont m_defaultCellFont;
|
||||||
|
|
||||||
|
wxGridCellCoordsArray m_cellsExposed;
|
||||||
|
wxArrayInt m_rowsExposed;
|
||||||
|
wxArrayInt m_colsExposed;
|
||||||
|
wxArrayInt m_rowLabelsExposed;
|
||||||
|
wxArrayInt m_colLabelsExposed;
|
||||||
|
|
||||||
|
bool m_inOnKeyDown;
|
||||||
|
int m_batchCount;
|
||||||
|
|
||||||
|
int m_cursorMode;
|
||||||
|
enum { WXGRID_CURSOR_DEFAULT,
|
||||||
|
WXGRID_CURSOR_SELECT_CELL,
|
||||||
|
WXGRID_CURSOR_RESIZE_ROW,
|
||||||
|
WXGRID_CURSOR_RESIZE_COL,
|
||||||
|
WXGRID_CURSOR_SELECT_ROW,
|
||||||
|
WXGRID_CURSOR_SELECT_COL
|
||||||
|
};
|
||||||
|
|
||||||
|
int m_dragLastPos;
|
||||||
|
int m_dragRowOrCol;
|
||||||
|
bool m_isDragging;
|
||||||
|
|
||||||
|
wxGridCellCoords m_selectionStart;
|
||||||
|
|
||||||
|
wxCursor m_rowResizeCursor;
|
||||||
|
wxCursor m_colResizeCursor;
|
||||||
|
|
||||||
|
bool m_editable; // applies to whole grid
|
||||||
|
int m_editCtrlType; // for current cell
|
||||||
|
wxWindow* m_cellEditCtrl;
|
||||||
|
bool m_cellEditCtrlEnabled;
|
||||||
|
|
||||||
|
|
||||||
|
void Create();
|
||||||
|
void Init();
|
||||||
|
void CalcDimensions();
|
||||||
|
bool Redimension( wxGridTableMessage& );
|
||||||
|
|
||||||
|
|
||||||
|
bool SendEvent( const wxEventType,
|
||||||
|
int row, int col,
|
||||||
|
wxMouseEvent& );
|
||||||
|
|
||||||
|
bool SendEvent( const wxEventType,
|
||||||
|
int row, int col );
|
||||||
|
|
||||||
|
|
||||||
|
void OnPaint( wxPaintEvent& );
|
||||||
|
void OnSize( wxSizeEvent& );
|
||||||
|
void OnKeyDown( wxKeyEvent& );
|
||||||
|
|
||||||
|
|
||||||
|
void SetCurrentCell( const wxGridCellCoords& coords );
|
||||||
|
void SetCurrentCell( int row, int col )
|
||||||
|
{ SetCurrentCell( wxGridCellCoords(row, col) ); }
|
||||||
|
|
||||||
|
|
||||||
|
// ------ functions to get/send data (see also public functions)
|
||||||
|
//
|
||||||
|
bool GetModelValues();
|
||||||
|
bool SetModelValues();
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////// Public section ////////////////////
|
||||||
|
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS( wxGrid )
|
DECLARE_DYNAMIC_CLASS( wxGrid )
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
@@ -952,17 +968,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow
|
|||||||
|
|
||||||
class WXDLLEXPORT wxGridEvent : public wxNotifyEvent
|
class WXDLLEXPORT wxGridEvent : public wxNotifyEvent
|
||||||
{
|
{
|
||||||
protected:
|
public:
|
||||||
int m_row;
|
|
||||||
int m_col;
|
|
||||||
int m_x;
|
|
||||||
int m_y;
|
|
||||||
bool m_control;
|
|
||||||
bool m_meta;
|
|
||||||
bool m_shift;
|
|
||||||
bool m_alt;
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridEvent()
|
wxGridEvent()
|
||||||
: wxNotifyEvent(), m_row(-1), m_col(-1), m_x(-1), m_y(-1),
|
: wxNotifyEvent(), m_row(-1), m_col(-1), m_x(-1), m_y(-1),
|
||||||
m_control(0), m_meta(0), m_shift(0), m_alt(0)
|
m_control(0), m_meta(0), m_shift(0), m_alt(0)
|
||||||
@@ -981,22 +987,23 @@ class WXDLLEXPORT wxGridEvent : public wxNotifyEvent
|
|||||||
bool ShiftDown() { return m_shift; }
|
bool ShiftDown() { return m_shift; }
|
||||||
bool AltDown() { return m_alt; }
|
bool AltDown() { return m_alt; }
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxGridEvent)
|
protected:
|
||||||
};
|
int m_row;
|
||||||
|
int m_col;
|
||||||
|
|
||||||
class WXDLLEXPORT wxGridSizeEvent : public wxNotifyEvent
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
int m_rowOrCol;
|
|
||||||
int m_x;
|
int m_x;
|
||||||
int m_y;
|
int m_y;
|
||||||
bool m_control;
|
bool m_control;
|
||||||
bool m_meta;
|
bool m_meta;
|
||||||
bool m_shift;
|
bool m_shift;
|
||||||
bool m_alt;
|
bool m_alt;
|
||||||
|
|
||||||
public:
|
DECLARE_DYNAMIC_CLASS(wxGridEvent)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxGridSizeEvent : public wxNotifyEvent
|
||||||
|
{
|
||||||
|
public:
|
||||||
wxGridSizeEvent()
|
wxGridSizeEvent()
|
||||||
: wxNotifyEvent(), m_rowOrCol(-1), m_x(-1), m_y(-1),
|
: wxNotifyEvent(), m_rowOrCol(-1), m_x(-1), m_y(-1),
|
||||||
m_control(0), m_meta(0), m_shift(0), m_alt(0)
|
m_control(0), m_meta(0), m_shift(0), m_alt(0)
|
||||||
@@ -1014,37 +1021,38 @@ class WXDLLEXPORT wxGridSizeEvent : public wxNotifyEvent
|
|||||||
bool ShiftDown() { return m_shift; }
|
bool ShiftDown() { return m_shift; }
|
||||||
bool AltDown() { return m_alt; }
|
bool AltDown() { return m_alt; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int m_rowOrCol;
|
||||||
|
int m_x;
|
||||||
|
int m_y;
|
||||||
|
bool m_control;
|
||||||
|
bool m_meta;
|
||||||
|
bool m_shift;
|
||||||
|
bool m_alt;
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxGridSizeEvent)
|
DECLARE_DYNAMIC_CLASS(wxGridSizeEvent)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class WXDLLEXPORT wxGridRangeSelectEvent : public wxNotifyEvent
|
class WXDLLEXPORT wxGridRangeSelectEvent : public wxNotifyEvent
|
||||||
{
|
{
|
||||||
protected:
|
public:
|
||||||
wxGridCellCoords m_topLeft;
|
|
||||||
wxGridCellCoords m_bottomRight;
|
|
||||||
bool m_control;
|
|
||||||
bool m_meta;
|
|
||||||
bool m_shift;
|
|
||||||
bool m_alt;
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxGridRangeSelectEvent()
|
wxGridRangeSelectEvent()
|
||||||
: wxNotifyEvent()
|
: wxNotifyEvent()
|
||||||
{
|
{
|
||||||
m_topLeft = wxGridNoCellCoords;
|
m_topLeft = wxGridNoCellCoords;
|
||||||
m_bottomRight = wxGridNoCellCoords;
|
m_bottomRight = wxGridNoCellCoords;
|
||||||
m_control = FALSE;
|
m_control = FALSE;
|
||||||
m_meta = FALSE;
|
m_meta = FALSE;
|
||||||
m_shift = FALSE;
|
m_shift = FALSE;
|
||||||
m_alt = FALSE;
|
m_alt = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGridRangeSelectEvent(int id, wxEventType type, wxObject* obj,
|
wxGridRangeSelectEvent(int id, wxEventType type, wxObject* obj,
|
||||||
const wxGridCellCoords& topLeft,
|
const wxGridCellCoords& topLeft,
|
||||||
const wxGridCellCoords& bottomRight,
|
const wxGridCellCoords& bottomRight,
|
||||||
bool control=FALSE, bool shift=FALSE,
|
bool control=FALSE, bool shift=FALSE,
|
||||||
bool alt=FALSE, bool meta=FALSE);
|
bool alt=FALSE, bool meta=FALSE);
|
||||||
|
|
||||||
wxGridCellCoords GetTopLeftCoords() { return m_topLeft; }
|
wxGridCellCoords GetTopLeftCoords() { return m_topLeft; }
|
||||||
wxGridCellCoords GetBottomRightCoords() { return m_bottomRight; }
|
wxGridCellCoords GetBottomRightCoords() { return m_bottomRight; }
|
||||||
@@ -1057,6 +1065,14 @@ class WXDLLEXPORT wxGridRangeSelectEvent : public wxNotifyEvent
|
|||||||
bool ShiftDown() { return m_shift; }
|
bool ShiftDown() { return m_shift; }
|
||||||
bool AltDown() { return m_alt; }
|
bool AltDown() { return m_alt; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxGridCellCoords m_topLeft;
|
||||||
|
wxGridCellCoords m_bottomRight;
|
||||||
|
bool m_control;
|
||||||
|
bool m_meta;
|
||||||
|
bool m_shift;
|
||||||
|
bool m_alt;
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxGridRangeSelectEvent)
|
DECLARE_DYNAMIC_CLASS(wxGridRangeSelectEvent)
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1091,7 +1107,7 @@ typedef void (wxEvtHandler::*wxGridRangeSelectEventFunction)(wxGridRangeSelectEv
|
|||||||
#define EVT_GRID_ROW_SIZE(fn) { EVT_GRID_ROW_SIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridSizeEventFunction) &fn, NULL },
|
#define EVT_GRID_ROW_SIZE(fn) { EVT_GRID_ROW_SIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridSizeEventFunction) &fn, NULL },
|
||||||
#define EVT_GRID_COL_SIZE(fn) { EVT_GRID_COL_SIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridSizeEventFunction) &fn, NULL },
|
#define EVT_GRID_COL_SIZE(fn) { EVT_GRID_COL_SIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridSizeEventFunction) &fn, NULL },
|
||||||
#define EVT_GRID_RANGE_SELECT(fn) { EVT_GRID_RANGE_SELECT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridRangeSelectEventFunction) &fn, NULL },
|
#define EVT_GRID_RANGE_SELECT(fn) { EVT_GRID_RANGE_SELECT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridRangeSelectEventFunction) &fn, NULL },
|
||||||
#define EVT_GRID_CELL_CHANGE(fn) { EVT_GRID_CELL_CHANGE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
|
#define EVT_GRID_CELL_CHANGE(fn) { EVT_GRID_CELL_CHANGE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
|
||||||
#define EVT_GRID_SELECT_CELL(fn) { EVT_GRID_SELECT_CELL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
|
#define EVT_GRID_SELECT_CELL(fn) { EVT_GRID_SELECT_CELL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
|
||||||
|
|
||||||
|
|
||||||
|
@@ -664,8 +664,8 @@ BEGIN_EVENT_TABLE( wxGridRowLabelWindow, wxWindow )
|
|||||||
EVT_KEY_DOWN( wxGridRowLabelWindow::OnKeyDown )
|
EVT_KEY_DOWN( wxGridRowLabelWindow::OnKeyDown )
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxGridRowLabelWindow::wxGridRowLabelWindow( wxGrid *parent,
|
wxGridRowLabelWindow::wxGridRowLabelWindow( wxGrid *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxPoint &pos, const wxSize &size )
|
const wxPoint &pos, const wxSize &size )
|
||||||
: wxWindow( parent, id, pos, size )
|
: wxWindow( parent, id, pos, size )
|
||||||
{
|
{
|
||||||
@@ -681,11 +681,11 @@ void wxGridRowLabelWindow::OnPaint( wxPaintEvent &event )
|
|||||||
// set the y coord - MB
|
// set the y coord - MB
|
||||||
//
|
//
|
||||||
// m_owner->PrepareDC( dc );
|
// m_owner->PrepareDC( dc );
|
||||||
|
|
||||||
wxCoord x, y;
|
wxCoord x, y;
|
||||||
m_owner->CalcUnscrolledPosition( 0, 0, &x, &y );
|
m_owner->CalcUnscrolledPosition( 0, 0, &x, &y );
|
||||||
dc.SetDeviceOrigin( 0, -y );
|
dc.SetDeviceOrigin( 0, -y );
|
||||||
|
|
||||||
m_owner->CalcRowLabelsExposed( GetUpdateRegion() );
|
m_owner->CalcRowLabelsExposed( GetUpdateRegion() );
|
||||||
m_owner->DrawRowLabels( dc );
|
m_owner->DrawRowLabels( dc );
|
||||||
}
|
}
|
||||||
@@ -717,8 +717,8 @@ BEGIN_EVENT_TABLE( wxGridColLabelWindow, wxWindow )
|
|||||||
EVT_KEY_DOWN( wxGridColLabelWindow::OnKeyDown )
|
EVT_KEY_DOWN( wxGridColLabelWindow::OnKeyDown )
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxGridColLabelWindow::wxGridColLabelWindow( wxGrid *parent,
|
wxGridColLabelWindow::wxGridColLabelWindow( wxGrid *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxPoint &pos, const wxSize &size )
|
const wxPoint &pos, const wxSize &size )
|
||||||
: wxWindow( parent, id, pos, size )
|
: wxWindow( parent, id, pos, size )
|
||||||
{
|
{
|
||||||
@@ -734,13 +734,13 @@ void wxGridColLabelWindow::OnPaint( wxPaintEvent &event )
|
|||||||
// set the x coord - MB
|
// set the x coord - MB
|
||||||
//
|
//
|
||||||
// m_owner->PrepareDC( dc );
|
// m_owner->PrepareDC( dc );
|
||||||
|
|
||||||
wxCoord x, y;
|
wxCoord x, y;
|
||||||
m_owner->CalcUnscrolledPosition( 0, 0, &x, &y );
|
m_owner->CalcUnscrolledPosition( 0, 0, &x, &y );
|
||||||
dc.SetDeviceOrigin( -x, 0 );
|
dc.SetDeviceOrigin( -x, 0 );
|
||||||
|
|
||||||
m_owner->CalcColLabelsExposed( GetUpdateRegion() );
|
m_owner->CalcColLabelsExposed( GetUpdateRegion() );
|
||||||
m_owner->DrawColLabels( dc );
|
m_owner->DrawColLabels( dc );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -769,8 +769,8 @@ BEGIN_EVENT_TABLE( wxGridCornerLabelWindow, wxWindow )
|
|||||||
EVT_KEY_DOWN( wxGridCornerLabelWindow::OnKeyDown )
|
EVT_KEY_DOWN( wxGridCornerLabelWindow::OnKeyDown )
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxGridCornerLabelWindow::wxGridCornerLabelWindow( wxGrid *parent,
|
wxGridCornerLabelWindow::wxGridCornerLabelWindow( wxGrid *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxPoint &pos, const wxSize &size )
|
const wxPoint &pos, const wxSize &size )
|
||||||
: wxWindow( parent, id, pos, size, wxRAISED_BORDER )
|
: wxWindow( parent, id, pos, size, wxRAISED_BORDER )
|
||||||
{
|
{
|
||||||
@@ -805,8 +805,8 @@ BEGIN_EVENT_TABLE( wxGridWindow, wxPanel )
|
|||||||
EVT_KEY_DOWN( wxGridWindow::OnKeyDown )
|
EVT_KEY_DOWN( wxGridWindow::OnKeyDown )
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxGridWindow::wxGridWindow( wxGrid *parent,
|
wxGridWindow::wxGridWindow( wxGrid *parent,
|
||||||
wxGridRowLabelWindow *rowLblWin,
|
wxGridRowLabelWindow *rowLblWin,
|
||||||
wxGridColLabelWindow *colLblWin,
|
wxGridColLabelWindow *colLblWin,
|
||||||
wxWindowID id, const wxPoint &pos, const wxSize &size )
|
wxWindowID id, const wxPoint &pos, const wxSize &size )
|
||||||
: wxPanel( parent, id, pos, size, wxSUNKEN_BORDER, "grid window" )
|
: wxPanel( parent, id, pos, size, wxSUNKEN_BORDER, "grid window" )
|
||||||
@@ -814,7 +814,7 @@ wxGridWindow::wxGridWindow( wxGrid *parent,
|
|||||||
m_owner = parent;
|
m_owner = parent;
|
||||||
m_rowLabelWin = rowLblWin;
|
m_rowLabelWin = rowLblWin;
|
||||||
m_colLabelWin = colLblWin;
|
m_colLabelWin = colLblWin;
|
||||||
|
|
||||||
SetBackgroundColour( "WHITE" );
|
SetBackgroundColour( "WHITE" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -881,42 +881,42 @@ wxGrid::wxGrid( wxWindow *parent,
|
|||||||
int colLblH = WXGRID_DEFAULT_COL_LABEL_HEIGHT;
|
int colLblH = WXGRID_DEFAULT_COL_LABEL_HEIGHT;
|
||||||
int rowLblW = WXGRID_DEFAULT_ROW_LABEL_WIDTH;
|
int rowLblW = WXGRID_DEFAULT_ROW_LABEL_WIDTH;
|
||||||
|
|
||||||
m_rowLabelWin = new wxGridRowLabelWindow( this,
|
m_rowLabelWin = new wxGridRowLabelWindow( this,
|
||||||
-1,
|
-1,
|
||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxSize(rowLblW,-1) );
|
wxSize(rowLblW,-1) );
|
||||||
|
|
||||||
m_colLabelWin = new wxGridColLabelWindow( this,
|
m_colLabelWin = new wxGridColLabelWindow( this,
|
||||||
-1,
|
-1,
|
||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxSize(-1, colLblH ) );
|
wxSize(-1, colLblH ) );
|
||||||
|
|
||||||
m_cornerLabelWin = new wxGridCornerLabelWindow( this,
|
m_cornerLabelWin = new wxGridCornerLabelWindow( this,
|
||||||
-1,
|
-1,
|
||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxSize(rowLblW, colLblH ) );
|
wxSize(rowLblW, colLblH ) );
|
||||||
|
|
||||||
m_gridWin = new wxGridWindow( this,
|
m_gridWin = new wxGridWindow( this,
|
||||||
m_rowLabelWin,
|
m_rowLabelWin,
|
||||||
m_colLabelWin,
|
m_colLabelWin,
|
||||||
-1,
|
-1,
|
||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxDefaultSize );
|
wxDefaultSize );
|
||||||
|
|
||||||
SetTargetWindow( m_gridWin );
|
SetTargetWindow( m_gridWin );
|
||||||
|
|
||||||
m_mainSizer = new wxBoxSizer( wxVERTICAL );
|
m_mainSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
m_topSizer = new wxBoxSizer( wxHORIZONTAL );
|
m_topSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
m_topSizer->Add( m_cornerLabelWin, 0 );
|
m_topSizer->Add( m_cornerLabelWin, 0 );
|
||||||
m_topSizer->Add( m_colLabelWin, 1 );
|
m_topSizer->Add( m_colLabelWin, 1 );
|
||||||
|
|
||||||
m_mainSizer->Add( m_topSizer, 0, wxEXPAND );
|
m_mainSizer->Add( m_topSizer, 0, wxEXPAND );
|
||||||
|
|
||||||
m_middleSizer = new wxBoxSizer( wxHORIZONTAL );
|
m_middleSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
m_middleSizer->Add( m_rowLabelWin, 0, wxEXPAND );
|
m_middleSizer->Add( m_rowLabelWin, 0, wxEXPAND );
|
||||||
m_middleSizer->Add( m_gridWin, 1, wxEXPAND );
|
m_middleSizer->Add( m_gridWin, 1, wxEXPAND );
|
||||||
|
|
||||||
m_mainSizer->Add( m_middleSizer, 1, wxEXPAND );
|
m_mainSizer->Add( m_middleSizer, 1, wxEXPAND );
|
||||||
|
|
||||||
SetAutoLayout( TRUE );
|
SetAutoLayout( TRUE );
|
||||||
@@ -940,7 +940,7 @@ void wxGrid::Create()
|
|||||||
m_rowLabelWin = (wxGridRowLabelWindow *) NULL;
|
m_rowLabelWin = (wxGridRowLabelWindow *) NULL;
|
||||||
m_colLabelWin = (wxGridColLabelWindow *) NULL;
|
m_colLabelWin = (wxGridColLabelWindow *) NULL;
|
||||||
m_cornerLabelWin = (wxGridCornerLabelWindow *) NULL;
|
m_cornerLabelWin = (wxGridCornerLabelWindow *) NULL;
|
||||||
m_cellEditCtrl = (wxWindow *) NULL;
|
m_cellEditCtrl = (wxWindow *) NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -979,8 +979,16 @@ void wxGrid::Init()
|
|||||||
m_rowLabelWidth = WXGRID_DEFAULT_ROW_LABEL_WIDTH;
|
m_rowLabelWidth = WXGRID_DEFAULT_ROW_LABEL_WIDTH;
|
||||||
m_colLabelHeight = WXGRID_DEFAULT_COL_LABEL_HEIGHT;
|
m_colLabelHeight = WXGRID_DEFAULT_COL_LABEL_HEIGHT;
|
||||||
|
|
||||||
m_labelBackgroundColour = m_rowLabelWin->GetBackgroundColour();
|
if ( m_rowLabelWin )
|
||||||
m_labelTextColour = wxColour( "BLACK" );
|
{
|
||||||
|
m_labelBackgroundColour = m_rowLabelWin->GetBackgroundColour();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_labelBackgroundColour = wxColour( _T("WHITE") );
|
||||||
|
}
|
||||||
|
|
||||||
|
m_labelTextColour = wxColour( _T("BLACK") );
|
||||||
|
|
||||||
// TODO: something better than this ?
|
// TODO: something better than this ?
|
||||||
//
|
//
|
||||||
@@ -1076,12 +1084,12 @@ void wxGrid::CalcDimensions()
|
|||||||
{
|
{
|
||||||
int right = m_colRights[ m_numCols-1 ] + 20;
|
int right = m_colRights[ m_numCols-1 ] + 20;
|
||||||
int bottom = m_rowBottoms[ m_numRows-1 ] + 20;
|
int bottom = m_rowBottoms[ m_numRows-1 ] + 20;
|
||||||
|
|
||||||
// TODO: restore the scroll position that we had before sizing
|
// TODO: restore the scroll position that we had before sizing
|
||||||
//
|
//
|
||||||
int x, y;
|
int x, y;
|
||||||
GetViewStart( &x, &y );
|
GetViewStart( &x, &y );
|
||||||
SetScrollbars( 10, 10,
|
SetScrollbars( 10, 10,
|
||||||
right/10, bottom/10,
|
right/10, bottom/10,
|
||||||
x, y );
|
x, y );
|
||||||
}
|
}
|
||||||
@@ -1110,7 +1118,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
|
|||||||
|
|
||||||
int bottom = 0;
|
int bottom = 0;
|
||||||
if ( pos > 0 ) bottom = m_rowBottoms[pos-1];
|
if ( pos > 0 ) bottom = m_rowBottoms[pos-1];
|
||||||
|
|
||||||
for ( i = pos; i < m_numRows; i++ )
|
for ( i = pos; i < m_numRows; i++ )
|
||||||
{
|
{
|
||||||
bottom += m_rowHeights[i];
|
bottom += m_rowHeights[i];
|
||||||
@@ -1134,7 +1142,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
|
|||||||
|
|
||||||
int bottom = 0;
|
int bottom = 0;
|
||||||
if ( oldNumRows > 0 ) bottom = m_rowBottoms[oldNumRows-1];
|
if ( oldNumRows > 0 ) bottom = m_rowBottoms[oldNumRows-1];
|
||||||
|
|
||||||
for ( i = oldNumRows; i < m_numRows; i++ )
|
for ( i = oldNumRows; i < m_numRows; i++ )
|
||||||
{
|
{
|
||||||
bottom += m_rowHeights[i];
|
bottom += m_rowHeights[i];
|
||||||
@@ -1174,7 +1182,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
|
|||||||
m_rowBottoms[i] = h;
|
m_rowBottoms[i] = h;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CalcDimensions();
|
CalcDimensions();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -1192,7 +1200,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
|
|||||||
|
|
||||||
int right = 0;
|
int right = 0;
|
||||||
if ( pos > 0 ) right = m_colRights[pos-1];
|
if ( pos > 0 ) right = m_colRights[pos-1];
|
||||||
|
|
||||||
for ( i = pos; i < m_numCols; i++ )
|
for ( i = pos; i < m_numCols; i++ )
|
||||||
{
|
{
|
||||||
right += m_colWidths[i];
|
right += m_colWidths[i];
|
||||||
@@ -1216,7 +1224,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
|
|||||||
|
|
||||||
int right = 0;
|
int right = 0;
|
||||||
if ( oldNumCols > 0 ) right = m_colRights[oldNumCols-1];
|
if ( oldNumCols > 0 ) right = m_colRights[oldNumCols-1];
|
||||||
|
|
||||||
for ( i = oldNumCols; i < m_numCols; i++ )
|
for ( i = oldNumCols; i < m_numCols; i++ )
|
||||||
{
|
{
|
||||||
right += m_colWidths[i];
|
right += m_colWidths[i];
|
||||||
@@ -1246,7 +1254,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
|
|||||||
#endif
|
#endif
|
||||||
m_currentCellCoords = wxGridNoCellCoords;
|
m_currentCellCoords = wxGridNoCellCoords;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( m_currentCellCoords.GetCol() >= m_numCols )
|
if ( m_currentCellCoords.GetCol() >= m_numCols )
|
||||||
m_currentCellCoords.Set( 0, 0 );
|
m_currentCellCoords.Set( 0, 0 );
|
||||||
@@ -1307,10 +1315,10 @@ void wxGrid::CalcRowLabelsExposed( wxRegion& reg )
|
|||||||
|
|
||||||
rowTop = m_rowBottoms[row] - m_rowHeights[row];
|
rowTop = m_rowBottoms[row] - m_rowHeights[row];
|
||||||
if ( rowTop > bottom ) break;
|
if ( rowTop > bottom ) break;
|
||||||
|
|
||||||
m_rowLabelsExposed.Add( row );
|
m_rowLabelsExposed.Add( row );
|
||||||
}
|
}
|
||||||
|
|
||||||
iter++ ;
|
iter++ ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1353,13 +1361,13 @@ void wxGrid::CalcColLabelsExposed( wxRegion& reg )
|
|||||||
for ( col = 0; col < m_numCols; col++ )
|
for ( col = 0; col < m_numCols; col++ )
|
||||||
{
|
{
|
||||||
if ( m_colRights[col] < left ) continue;
|
if ( m_colRights[col] < left ) continue;
|
||||||
|
|
||||||
colLeft = m_colRights[col] - m_colWidths[col];
|
colLeft = m_colRights[col] - m_colWidths[col];
|
||||||
if ( colLeft > right ) break;
|
if ( colLeft > right ) break;
|
||||||
|
|
||||||
m_colLabelsExposed.Add( col );
|
m_colLabelsExposed.Add( col );
|
||||||
}
|
}
|
||||||
|
|
||||||
iter++ ;
|
iter++ ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1408,21 +1416,21 @@ void wxGrid::CalcCellsExposed( wxRegion& reg )
|
|||||||
|
|
||||||
rowTop = m_rowBottoms[row] - m_rowHeights[row];
|
rowTop = m_rowBottoms[row] - m_rowHeights[row];
|
||||||
if ( rowTop > bottom ) break;
|
if ( rowTop > bottom ) break;
|
||||||
|
|
||||||
m_rowsExposed.Add( row );
|
m_rowsExposed.Add( row );
|
||||||
|
|
||||||
for ( col = 0; col < m_numCols; col++ )
|
for ( col = 0; col < m_numCols; col++ )
|
||||||
{
|
{
|
||||||
if ( m_colRights[col] < left ) continue;
|
if ( m_colRights[col] < left ) continue;
|
||||||
|
|
||||||
colLeft = m_colRights[col] - m_colWidths[col];
|
colLeft = m_colRights[col] - m_colWidths[col];
|
||||||
if ( colLeft > right ) break;
|
if ( colLeft > right ) break;
|
||||||
|
|
||||||
if ( m_colsExposed.Index( col ) == wxNOT_FOUND ) m_colsExposed.Add( col );
|
if ( m_colsExposed.Index( col ) == wxNOT_FOUND ) m_colsExposed.Add( col );
|
||||||
m_cellsExposed.Add( wxGridCellCoords( row, col ) );
|
m_cellsExposed.Add( wxGridCellCoords( row, col ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
iter++ ;
|
iter++ ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1433,7 +1441,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
int x, y, row;
|
int x, y, row;
|
||||||
wxPoint pos( event.GetPosition() );
|
wxPoint pos( event.GetPosition() );
|
||||||
CalcUnscrolledPosition( pos.x, pos.y, &x, &y );
|
CalcUnscrolledPosition( pos.x, pos.y, &x, &y );
|
||||||
|
|
||||||
if ( event.Dragging() )
|
if ( event.Dragging() )
|
||||||
{
|
{
|
||||||
m_isDragging = TRUE;
|
m_isDragging = TRUE;
|
||||||
@@ -1447,7 +1455,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
int cw, ch, left, dummy;
|
int cw, ch, left, dummy;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
CalcUnscrolledPosition( 0, 0, &left, &dummy );
|
CalcUnscrolledPosition( 0, 0, &left, &dummy );
|
||||||
|
|
||||||
wxClientDC dc( m_gridWin );
|
wxClientDC dc( m_gridWin );
|
||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
dc.SetLogicalFunction(wxXOR);
|
dc.SetLogicalFunction(wxXOR);
|
||||||
@@ -1476,7 +1484,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
|
|
||||||
m_isDragging = FALSE;
|
m_isDragging = FALSE;
|
||||||
|
|
||||||
|
|
||||||
// ------------ Left button pressed
|
// ------------ Left button pressed
|
||||||
//
|
//
|
||||||
if ( event.LeftDown() )
|
if ( event.LeftDown() )
|
||||||
@@ -1513,8 +1521,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
SendEvent( EVT_GRID_LABEL_LEFT_DCLICK, row, -1, event );
|
SendEvent( EVT_GRID_LABEL_LEFT_DCLICK, row, -1, event );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------ Left button released
|
// ------------ Left button released
|
||||||
//
|
//
|
||||||
else if ( event.LeftUp() )
|
else if ( event.LeftUp() )
|
||||||
@@ -1522,7 +1530,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
if ( m_cursorMode == WXGRID_CURSOR_RESIZE_ROW )
|
if ( m_cursorMode == WXGRID_CURSOR_RESIZE_ROW )
|
||||||
{
|
{
|
||||||
m_rowLabelWin->ReleaseMouse();
|
m_rowLabelWin->ReleaseMouse();
|
||||||
|
|
||||||
if ( m_dragLastPos >= 0 )
|
if ( m_dragLastPos >= 0 )
|
||||||
{
|
{
|
||||||
// erase the last line and resize the row
|
// erase the last line and resize the row
|
||||||
@@ -1530,7 +1538,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
int cw, ch, left, dummy;
|
int cw, ch, left, dummy;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
CalcUnscrolledPosition( 0, 0, &left, &dummy );
|
CalcUnscrolledPosition( 0, 0, &left, &dummy );
|
||||||
|
|
||||||
wxClientDC dc( m_gridWin );
|
wxClientDC dc( m_gridWin );
|
||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
dc.SetLogicalFunction( wxINVERT );
|
dc.SetLogicalFunction( wxINVERT );
|
||||||
@@ -1538,14 +1546,14 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
HideCellEditControl();
|
HideCellEditControl();
|
||||||
|
|
||||||
int rowTop = m_rowBottoms[m_dragRowOrCol] - m_rowHeights[m_dragRowOrCol];
|
int rowTop = m_rowBottoms[m_dragRowOrCol] - m_rowHeights[m_dragRowOrCol];
|
||||||
SetRowSize( m_dragRowOrCol, wxMax( y - rowTop, WXGRID_MIN_ROW_HEIGHT ) );
|
SetRowSize( m_dragRowOrCol, wxMax( y - rowTop, WXGRID_MIN_ROW_HEIGHT ) );
|
||||||
if ( !GetBatchCount() )
|
if ( !GetBatchCount() )
|
||||||
{
|
{
|
||||||
// TODO: optimize this
|
// TODO: optimize this
|
||||||
m_rowLabelWin->Refresh();
|
m_rowLabelWin->Refresh();
|
||||||
m_gridWin->Refresh();
|
m_gridWin->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowCellEditControl();
|
ShowCellEditControl();
|
||||||
|
|
||||||
// Note: we are ending the event *after* doing
|
// Note: we are ending the event *after* doing
|
||||||
@@ -1569,8 +1577,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
// no default action at the moment
|
// no default action at the moment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------ Right double click
|
// ------------ Right double click
|
||||||
//
|
//
|
||||||
else if ( event.RightDClick() )
|
else if ( event.RightDClick() )
|
||||||
@@ -1581,8 +1589,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
|
|||||||
// no default action at the moment
|
// no default action at the moment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------ No buttons down and mouse moving
|
// ------------ No buttons down and mouse moving
|
||||||
//
|
//
|
||||||
else if ( event.Moving() )
|
else if ( event.Moving() )
|
||||||
@@ -1613,7 +1621,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
int x, y, col;
|
int x, y, col;
|
||||||
wxPoint pos( event.GetPosition() );
|
wxPoint pos( event.GetPosition() );
|
||||||
CalcUnscrolledPosition( pos.x, pos.y, &x, &y );
|
CalcUnscrolledPosition( pos.x, pos.y, &x, &y );
|
||||||
|
|
||||||
if ( event.Dragging() )
|
if ( event.Dragging() )
|
||||||
{
|
{
|
||||||
m_isDragging = TRUE;
|
m_isDragging = TRUE;
|
||||||
@@ -1627,7 +1635,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
int cw, ch, dummy, top;
|
int cw, ch, dummy, top;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
CalcUnscrolledPosition( 0, 0, &dummy, &top );
|
CalcUnscrolledPosition( 0, 0, &dummy, &top );
|
||||||
|
|
||||||
wxClientDC dc( m_gridWin );
|
wxClientDC dc( m_gridWin );
|
||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
dc.SetLogicalFunction(wxXOR);
|
dc.SetLogicalFunction(wxXOR);
|
||||||
@@ -1656,7 +1664,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
|
|
||||||
m_isDragging = FALSE;
|
m_isDragging = FALSE;
|
||||||
|
|
||||||
|
|
||||||
// ------------ Left button pressed
|
// ------------ Left button pressed
|
||||||
//
|
//
|
||||||
if ( event.LeftDown() )
|
if ( event.LeftDown() )
|
||||||
@@ -1693,8 +1701,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
SendEvent( EVT_GRID_LABEL_LEFT_DCLICK, -1, col, event );
|
SendEvent( EVT_GRID_LABEL_LEFT_DCLICK, -1, col, event );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------ Left button released
|
// ------------ Left button released
|
||||||
//
|
//
|
||||||
else if ( event.LeftUp() )
|
else if ( event.LeftUp() )
|
||||||
@@ -1702,7 +1710,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
if ( m_cursorMode == WXGRID_CURSOR_RESIZE_COL )
|
if ( m_cursorMode == WXGRID_CURSOR_RESIZE_COL )
|
||||||
{
|
{
|
||||||
m_colLabelWin->ReleaseMouse();
|
m_colLabelWin->ReleaseMouse();
|
||||||
|
|
||||||
if ( m_dragLastPos >= 0 )
|
if ( m_dragLastPos >= 0 )
|
||||||
{
|
{
|
||||||
// erase the last line and resize the col
|
// erase the last line and resize the col
|
||||||
@@ -1710,7 +1718,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
int cw, ch, dummy, top;
|
int cw, ch, dummy, top;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
CalcUnscrolledPosition( 0, 0, &dummy, &top );
|
CalcUnscrolledPosition( 0, 0, &dummy, &top );
|
||||||
|
|
||||||
wxClientDC dc( m_gridWin );
|
wxClientDC dc( m_gridWin );
|
||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
dc.SetLogicalFunction( wxINVERT );
|
dc.SetLogicalFunction( wxINVERT );
|
||||||
@@ -1718,15 +1726,15 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
HideCellEditControl();
|
HideCellEditControl();
|
||||||
|
|
||||||
int colLeft = m_colRights[m_dragRowOrCol] - m_colWidths[m_dragRowOrCol];
|
int colLeft = m_colRights[m_dragRowOrCol] - m_colWidths[m_dragRowOrCol];
|
||||||
SetColSize( m_dragRowOrCol, wxMax( x - colLeft, WXGRID_MIN_COL_WIDTH ) );
|
SetColSize( m_dragRowOrCol, wxMax( x - colLeft, WXGRID_MIN_COL_WIDTH ) );
|
||||||
|
|
||||||
if ( !GetBatchCount() )
|
if ( !GetBatchCount() )
|
||||||
{
|
{
|
||||||
// TODO: optimize this
|
// TODO: optimize this
|
||||||
m_colLabelWin->Refresh();
|
m_colLabelWin->Refresh();
|
||||||
m_gridWin->Refresh();
|
m_gridWin->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowCellEditControl();
|
ShowCellEditControl();
|
||||||
|
|
||||||
// Note: we are ending the event *after* doing
|
// Note: we are ending the event *after* doing
|
||||||
@@ -1737,9 +1745,9 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_dragLastPos = -1;
|
m_dragLastPos = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------ Right button down
|
// ------------ Right button down
|
||||||
//
|
//
|
||||||
else if ( event.RightDown() )
|
else if ( event.RightDown() )
|
||||||
@@ -1750,8 +1758,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
// no default action at the moment
|
// no default action at the moment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------ Right double click
|
// ------------ Right double click
|
||||||
//
|
//
|
||||||
else if ( event.RightDClick() )
|
else if ( event.RightDClick() )
|
||||||
@@ -1762,8 +1770,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
|
|||||||
// no default action at the moment
|
// no default action at the moment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------ No buttons down and mouse moving
|
// ------------ No buttons down and mouse moving
|
||||||
//
|
//
|
||||||
else if ( event.Moving() )
|
else if ( event.Moving() )
|
||||||
@@ -1830,14 +1838,14 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event )
|
|||||||
int x, y;
|
int x, y;
|
||||||
wxPoint pos( event.GetPosition() );
|
wxPoint pos( event.GetPosition() );
|
||||||
CalcUnscrolledPosition( pos.x, pos.y, &x, &y );
|
CalcUnscrolledPosition( pos.x, pos.y, &x, &y );
|
||||||
|
|
||||||
wxGridCellCoords coords;
|
wxGridCellCoords coords;
|
||||||
XYToCell( x, y, coords );
|
XYToCell( x, y, coords );
|
||||||
|
|
||||||
if ( event.Dragging() )
|
if ( event.Dragging() )
|
||||||
{
|
{
|
||||||
m_isDragging = TRUE;
|
m_isDragging = TRUE;
|
||||||
|
|
||||||
if ( m_cursorMode == WXGRID_CURSOR_SELECT_CELL )
|
if ( m_cursorMode == WXGRID_CURSOR_SELECT_CELL )
|
||||||
{
|
{
|
||||||
if ( coords != wxGridNoCellCoords )
|
if ( coords != wxGridNoCellCoords )
|
||||||
@@ -1909,10 +1917,10 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event )
|
|||||||
event ) )
|
event ) )
|
||||||
{
|
{
|
||||||
// no default action at the moment
|
// no default action at the moment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------ Right double click
|
// ------------ Right double click
|
||||||
//
|
//
|
||||||
else if ( event.RightDClick() )
|
else if ( event.RightDClick() )
|
||||||
@@ -1923,7 +1931,7 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event )
|
|||||||
event ) )
|
event ) )
|
||||||
{
|
{
|
||||||
// no default action at the moment
|
// no default action at the moment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2506,10 +2514,10 @@ bool wxGrid::SetModelValues()
|
|||||||
void wxGrid::DrawGridCellArea( wxDC& dc )
|
void wxGrid::DrawGridCellArea( wxDC& dc )
|
||||||
{
|
{
|
||||||
if ( !m_numRows || !m_numCols ) return;
|
if ( !m_numRows || !m_numCols ) return;
|
||||||
|
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t numCells = m_cellsExposed.GetCount();
|
size_t numCells = m_cellsExposed.GetCount();
|
||||||
|
|
||||||
for ( i = 0; i < numCells; i++ )
|
for ( i = 0; i < numCells; i++ )
|
||||||
{
|
{
|
||||||
DrawCell( dc, m_cellsExposed[i] );
|
DrawCell( dc, m_cellsExposed[i] );
|
||||||
@@ -2521,7 +2529,7 @@ void wxGrid::DrawCell( wxDC& dc, const wxGridCellCoords& coords )
|
|||||||
{
|
{
|
||||||
if ( m_colWidths[coords.GetCol()] <=0 ||
|
if ( m_colWidths[coords.GetCol()] <=0 ||
|
||||||
m_rowHeights[coords.GetRow()] <= 0 ) return;
|
m_rowHeights[coords.GetRow()] <= 0 ) return;
|
||||||
|
|
||||||
if ( m_gridLinesEnabled )
|
if ( m_gridLinesEnabled )
|
||||||
DrawCellBorder( dc, coords );
|
DrawCellBorder( dc, coords );
|
||||||
|
|
||||||
@@ -2538,11 +2546,11 @@ void wxGrid::DrawCellBorder( wxDC& dc, const wxGridCellCoords& coords )
|
|||||||
{
|
{
|
||||||
if ( m_colWidths[coords.GetCol()] <=0 ||
|
if ( m_colWidths[coords.GetCol()] <=0 ||
|
||||||
m_rowHeights[coords.GetRow()] <= 0 ) return;
|
m_rowHeights[coords.GetRow()] <= 0 ) return;
|
||||||
|
|
||||||
dc.SetPen( wxPen(GetGridLineColour(), 1, wxSOLID) );
|
dc.SetPen( wxPen(GetGridLineColour(), 1, wxSOLID) );
|
||||||
int row = coords.GetRow();
|
int row = coords.GetRow();
|
||||||
int col = coords.GetCol();
|
int col = coords.GetCol();
|
||||||
|
|
||||||
// right hand border
|
// right hand border
|
||||||
//
|
//
|
||||||
dc.DrawLine( m_colRights[col], m_rowBottoms[row] - m_rowHeights[row],
|
dc.DrawLine( m_colRights[col], m_rowBottoms[row] - m_rowHeights[row],
|
||||||
@@ -2559,7 +2567,7 @@ void wxGrid::DrawCellBackground( wxDC& dc, const wxGridCellCoords& coords )
|
|||||||
{
|
{
|
||||||
if ( m_colWidths[coords.GetCol()] <=0 ||
|
if ( m_colWidths[coords.GetCol()] <=0 ||
|
||||||
m_rowHeights[coords.GetRow()] <= 0 ) return;
|
m_rowHeights[coords.GetRow()] <= 0 ) return;
|
||||||
|
|
||||||
int row = coords.GetRow();
|
int row = coords.GetRow();
|
||||||
int col = coords.GetCol();
|
int col = coords.GetCol();
|
||||||
|
|
||||||
@@ -2589,7 +2597,7 @@ void wxGrid::DrawCellValue( wxDC& dc, const wxGridCellCoords& coords )
|
|||||||
{
|
{
|
||||||
if ( m_colWidths[coords.GetCol()] <=0 ||
|
if ( m_colWidths[coords.GetCol()] <=0 ||
|
||||||
m_rowHeights[coords.GetRow()] <= 0 ) return;
|
m_rowHeights[coords.GetRow()] <= 0 ) return;
|
||||||
|
|
||||||
int row = coords.GetRow();
|
int row = coords.GetRow();
|
||||||
int col = coords.GetCol();
|
int col = coords.GetCol();
|
||||||
|
|
||||||
@@ -2617,7 +2625,7 @@ void wxGrid::DrawCellValue( wxDC& dc, const wxGridCellCoords& coords )
|
|||||||
rect.SetY( m_rowBottoms[row] - m_rowHeights[row] + 2 );
|
rect.SetY( m_rowBottoms[row] - m_rowHeights[row] + 2 );
|
||||||
rect.SetWidth( m_colWidths[col] - 4 );
|
rect.SetWidth( m_colWidths[col] - 4 );
|
||||||
rect.SetHeight( m_rowHeights[row] - 4 );
|
rect.SetHeight( m_rowHeights[row] - 4 );
|
||||||
|
|
||||||
DrawTextRectangle( dc, GetCellValue( row, col ), rect, hAlign, vAlign );
|
DrawTextRectangle( dc, GetCellValue( row, col ), rect, hAlign, vAlign );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2629,8 +2637,8 @@ void wxGrid::DrawCellValue( wxDC& dc, const wxGridCellCoords& coords )
|
|||||||
//
|
//
|
||||||
void wxGrid::DrawAllGridLines( wxDC& dc )
|
void wxGrid::DrawAllGridLines( wxDC& dc )
|
||||||
{
|
{
|
||||||
if ( !m_gridLinesEnabled ||
|
if ( !m_gridLinesEnabled ||
|
||||||
!m_numRows ||
|
!m_numRows ||
|
||||||
!m_numCols ) return;
|
!m_numCols ) return;
|
||||||
|
|
||||||
int cw, ch;
|
int cw, ch;
|
||||||
@@ -2646,7 +2654,7 @@ void wxGrid::DrawAllGridLines( wxDC& dc )
|
|||||||
|
|
||||||
// horizontal grid lines
|
// horizontal grid lines
|
||||||
//
|
//
|
||||||
int i;
|
int i;
|
||||||
for ( i = 0; i <= m_numRows; i++ )
|
for ( i = 0; i <= m_numRows; i++ )
|
||||||
{
|
{
|
||||||
if ( m_rowBottoms[i] > bottom )
|
if ( m_rowBottoms[i] > bottom )
|
||||||
@@ -2679,21 +2687,21 @@ void wxGrid::DrawAllGridLines( wxDC& dc )
|
|||||||
void wxGrid::DrawRowLabels( wxDC& dc )
|
void wxGrid::DrawRowLabels( wxDC& dc )
|
||||||
{
|
{
|
||||||
if ( !m_numRows || !m_numCols ) return;
|
if ( !m_numRows || !m_numCols ) return;
|
||||||
|
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t numLabels = m_rowLabelsExposed.GetCount();
|
size_t numLabels = m_rowLabelsExposed.GetCount();
|
||||||
|
|
||||||
for ( i = 0; i < numLabels; i++ )
|
for ( i = 0; i < numLabels; i++ )
|
||||||
{
|
{
|
||||||
DrawRowLabel( dc, m_rowLabelsExposed[i] );
|
DrawRowLabel( dc, m_rowLabelsExposed[i] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void wxGrid::DrawRowLabel( wxDC& dc, int row )
|
void wxGrid::DrawRowLabel( wxDC& dc, int row )
|
||||||
{
|
{
|
||||||
if ( m_rowHeights[row] <= 0 ) return;
|
if ( m_rowHeights[row] <= 0 ) return;
|
||||||
|
|
||||||
// draw the label's horizontal border (the vertical border is
|
// draw the label's horizontal border (the vertical border is
|
||||||
// provided by the cell area window margin)
|
// provided by the cell area window margin)
|
||||||
//
|
//
|
||||||
@@ -2706,41 +2714,41 @@ void wxGrid::DrawRowLabel( wxDC& dc, int row )
|
|||||||
|
|
||||||
dc.DrawLine( 0, m_rowBottoms[row]+2,
|
dc.DrawLine( 0, m_rowBottoms[row]+2,
|
||||||
m_rowLabelWidth, m_rowBottoms[row]+2 );
|
m_rowLabelWidth, m_rowBottoms[row]+2 );
|
||||||
|
|
||||||
dc.SetBackgroundMode( wxTRANSPARENT );
|
dc.SetBackgroundMode( wxTRANSPARENT );
|
||||||
dc.SetTextForeground( GetLabelTextColour() );
|
dc.SetTextForeground( GetLabelTextColour() );
|
||||||
dc.SetFont( GetLabelFont() );
|
dc.SetFont( GetLabelFont() );
|
||||||
|
|
||||||
int hAlign, vAlign;
|
int hAlign, vAlign;
|
||||||
GetRowLabelAlignment( &hAlign, &vAlign );
|
GetRowLabelAlignment( &hAlign, &vAlign );
|
||||||
|
|
||||||
wxRect rect;
|
wxRect rect;
|
||||||
rect.SetX( 2 );
|
rect.SetX( 2 );
|
||||||
rect.SetY( m_rowBottoms[row] - m_rowHeights[row] + 2 );
|
rect.SetY( m_rowBottoms[row] - m_rowHeights[row] + 2 );
|
||||||
rect.SetWidth( m_rowLabelWidth - 4 );
|
rect.SetWidth( m_rowLabelWidth - 4 );
|
||||||
rect.SetHeight( m_rowHeights[row] - 4 );
|
rect.SetHeight( m_rowHeights[row] - 4 );
|
||||||
DrawTextRectangle( dc, GetRowLabelValue( row ), rect, hAlign, vAlign );
|
DrawTextRectangle( dc, GetRowLabelValue( row ), rect, hAlign, vAlign );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void wxGrid::DrawColLabels( wxDC& dc )
|
void wxGrid::DrawColLabels( wxDC& dc )
|
||||||
{
|
{
|
||||||
if ( !m_numRows || !m_numCols ) return;
|
if ( !m_numRows || !m_numCols ) return;
|
||||||
|
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t numLabels = m_colLabelsExposed.GetCount();
|
size_t numLabels = m_colLabelsExposed.GetCount();
|
||||||
|
|
||||||
for ( i = 0; i < numLabels; i++ )
|
for ( i = 0; i < numLabels; i++ )
|
||||||
{
|
{
|
||||||
DrawColLabel( dc, m_colLabelsExposed[i] );
|
DrawColLabel( dc, m_colLabelsExposed[i] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void wxGrid::DrawColLabel( wxDC& dc, int col )
|
void wxGrid::DrawColLabel( wxDC& dc, int col )
|
||||||
{
|
{
|
||||||
if ( m_colWidths[col] <= 0 ) return;
|
if ( m_colWidths[col] <= 0 ) return;
|
||||||
|
|
||||||
// draw the label's vertical border (the horizontal border is
|
// draw the label's vertical border (the horizontal border is
|
||||||
// provided by the cell area window margin)
|
// provided by the cell area window margin)
|
||||||
//
|
//
|
||||||
@@ -2760,13 +2768,13 @@ void wxGrid::DrawColLabel( wxDC& dc, int col )
|
|||||||
|
|
||||||
int hAlign, vAlign;
|
int hAlign, vAlign;
|
||||||
GetColLabelAlignment( &hAlign, &vAlign );
|
GetColLabelAlignment( &hAlign, &vAlign );
|
||||||
|
|
||||||
wxRect rect;
|
wxRect rect;
|
||||||
rect.SetX( m_colRights[col] - m_colWidths[col] + 2 );
|
rect.SetX( m_colRights[col] - m_colWidths[col] + 2 );
|
||||||
rect.SetY( 2 );
|
rect.SetY( 2 );
|
||||||
rect.SetWidth( m_colWidths[col] - 4 );
|
rect.SetWidth( m_colWidths[col] - 4 );
|
||||||
rect.SetHeight( m_colLabelHeight - 4 );
|
rect.SetHeight( m_colLabelHeight - 4 );
|
||||||
DrawTextRectangle( dc, GetColLabelValue( col ), rect, hAlign, vAlign );
|
DrawTextRectangle( dc, GetColLabelValue( col ), rect, hAlign, vAlign );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2922,7 +2930,7 @@ void wxGrid::EnableCellEditControl( bool enable )
|
|||||||
enable != m_cellEditCtrlEnabled )
|
enable != m_cellEditCtrlEnabled )
|
||||||
{
|
{
|
||||||
m_cellEditCtrlEnabled = enable;
|
m_cellEditCtrlEnabled = enable;
|
||||||
|
|
||||||
if ( m_cellEditCtrlEnabled )
|
if ( m_cellEditCtrlEnabled )
|
||||||
{
|
{
|
||||||
SetEditControlValue();
|
SetEditControlValue();
|
||||||
@@ -2957,14 +2965,14 @@ void wxGrid::ShowCellEditControl()
|
|||||||
int left, top, right, bottom;
|
int left, top, right, bottom;
|
||||||
CalcScrolledPosition( rect.GetLeft(), rect.GetTop(), &left, &top );
|
CalcScrolledPosition( rect.GetLeft(), rect.GetTop(), &left, &top );
|
||||||
CalcScrolledPosition( rect.GetRight(), rect.GetBottom(), &right, &bottom );
|
CalcScrolledPosition( rect.GetRight(), rect.GetBottom(), &right, &bottom );
|
||||||
|
|
||||||
int cw, ch;
|
int cw, ch;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
|
|
||||||
// Make the edit control large enough to allow for internal margins
|
// Make the edit control large enough to allow for internal margins
|
||||||
// TODO: remove this if the text ctrl sizing is improved esp. for unix
|
// TODO: remove this if the text ctrl sizing is improved esp. for unix
|
||||||
//
|
//
|
||||||
#if defined (__WXMOTIF__)
|
#if defined (__WXMOTIF__)
|
||||||
rect.SetLeft( wxMax(0, left-4) );
|
rect.SetLeft( wxMax(0, left-4) );
|
||||||
rect.SetTop( wxMax(0, top-4) );
|
rect.SetTop( wxMax(0, top-4) );
|
||||||
rect.SetRight( rect.GetRight() + 8 );
|
rect.SetRight( rect.GetRight() + 8 );
|
||||||
@@ -2973,9 +2981,9 @@ void wxGrid::ShowCellEditControl()
|
|||||||
rect.SetLeft( wxMax(0, left-2) );
|
rect.SetLeft( wxMax(0, left-2) );
|
||||||
rect.SetTop( wxMax(0, top-2) );
|
rect.SetTop( wxMax(0, top-2) );
|
||||||
rect.SetRight( rect.GetRight() + 4 );
|
rect.SetRight( rect.GetRight() + 4 );
|
||||||
rect.SetBottom( rect.GetBottom() + 4 );
|
rect.SetBottom( rect.GetBottom() + 4 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_cellEditCtrl->SetSize( rect );
|
m_cellEditCtrl->SetSize( rect );
|
||||||
m_cellEditCtrl->Show( TRUE );
|
m_cellEditCtrl->Show( TRUE );
|
||||||
|
|
||||||
@@ -3107,8 +3115,8 @@ void wxGrid::SaveEditControlValue()
|
|||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// ------ Grid location functions
|
// ------ Grid location functions
|
||||||
// Note that all of these functions work with the logical coordinates of
|
// Note that all of these functions work with the logical coordinates of
|
||||||
// grid cells and labels so you will need to convert from device
|
// grid cells and labels so you will need to convert from device
|
||||||
// coordinates for mouse events etc.
|
// coordinates for mouse events etc.
|
||||||
//
|
//
|
||||||
@@ -3212,18 +3220,18 @@ bool wxGrid::IsVisible( int row, int col, bool wholeCellVisible )
|
|||||||
// get the cell rectangle in logical coords
|
// get the cell rectangle in logical coords
|
||||||
//
|
//
|
||||||
wxRect r( CellToRect( row, col ) );
|
wxRect r( CellToRect( row, col ) );
|
||||||
|
|
||||||
// convert to device coords
|
// convert to device coords
|
||||||
//
|
//
|
||||||
int left, top, right, bottom;
|
int left, top, right, bottom;
|
||||||
CalcScrolledPosition( r.GetLeft(), r.GetTop(), &left, &top );
|
CalcScrolledPosition( r.GetLeft(), r.GetTop(), &left, &top );
|
||||||
CalcScrolledPosition( r.GetRight(), r.GetBottom(), &right, &bottom );
|
CalcScrolledPosition( r.GetRight(), r.GetBottom(), &right, &bottom );
|
||||||
|
|
||||||
// check against the client area of the grid window
|
// check against the client area of the grid window
|
||||||
//
|
//
|
||||||
int cw, ch;
|
int cw, ch;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
|
|
||||||
if ( wholeCellVisible )
|
if ( wholeCellVisible )
|
||||||
{
|
{
|
||||||
// is the cell wholly visible ?
|
// is the cell wholly visible ?
|
||||||
@@ -3247,7 +3255,7 @@ bool wxGrid::IsVisible( int row, int col, bool wholeCellVisible )
|
|||||||
void wxGrid::MakeCellVisible( int row, int col )
|
void wxGrid::MakeCellVisible( int row, int col )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int xpos = -1, ypos = -1;
|
int xpos = -1, ypos = -1;
|
||||||
|
|
||||||
if ( row >= 0 && row < m_numRows &&
|
if ( row >= 0 && row < m_numRows &&
|
||||||
col >= 0 && col < m_numCols )
|
col >= 0 && col < m_numCols )
|
||||||
@@ -3255,16 +3263,16 @@ void wxGrid::MakeCellVisible( int row, int col )
|
|||||||
// get the cell rectangle in logical coords
|
// get the cell rectangle in logical coords
|
||||||
//
|
//
|
||||||
wxRect r( CellToRect( row, col ) );
|
wxRect r( CellToRect( row, col ) );
|
||||||
|
|
||||||
// convert to device coords
|
// convert to device coords
|
||||||
//
|
//
|
||||||
int left, top, right, bottom;
|
int left, top, right, bottom;
|
||||||
CalcScrolledPosition( r.GetLeft(), r.GetTop(), &left, &top );
|
CalcScrolledPosition( r.GetLeft(), r.GetTop(), &left, &top );
|
||||||
CalcScrolledPosition( r.GetRight(), r.GetBottom(), &right, &bottom );
|
CalcScrolledPosition( r.GetRight(), r.GetBottom(), &right, &bottom );
|
||||||
|
|
||||||
int cw, ch;
|
int cw, ch;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
|
|
||||||
if ( top < 0 )
|
if ( top < 0 )
|
||||||
{
|
{
|
||||||
ypos = r.GetTop();
|
ypos = r.GetTop();
|
||||||
@@ -3321,7 +3329,7 @@ bool wxGrid::MoveCursorUp()
|
|||||||
{
|
{
|
||||||
MakeCellVisible( m_currentCellCoords.GetRow() - 1,
|
MakeCellVisible( m_currentCellCoords.GetRow() - 1,
|
||||||
m_currentCellCoords.GetCol() );
|
m_currentCellCoords.GetCol() );
|
||||||
|
|
||||||
SetCurrentCell( m_currentCellCoords.GetRow() - 1,
|
SetCurrentCell( m_currentCellCoords.GetRow() - 1,
|
||||||
m_currentCellCoords.GetCol() );
|
m_currentCellCoords.GetCol() );
|
||||||
|
|
||||||
@@ -3341,7 +3349,7 @@ bool wxGrid::MoveCursorDown()
|
|||||||
{
|
{
|
||||||
MakeCellVisible( m_currentCellCoords.GetRow() + 1,
|
MakeCellVisible( m_currentCellCoords.GetRow() + 1,
|
||||||
m_currentCellCoords.GetCol() );
|
m_currentCellCoords.GetCol() );
|
||||||
|
|
||||||
SetCurrentCell( m_currentCellCoords.GetRow() + 1,
|
SetCurrentCell( m_currentCellCoords.GetRow() + 1,
|
||||||
m_currentCellCoords.GetCol() );
|
m_currentCellCoords.GetCol() );
|
||||||
|
|
||||||
@@ -3359,7 +3367,7 @@ bool wxGrid::MoveCursorLeft()
|
|||||||
{
|
{
|
||||||
MakeCellVisible( m_currentCellCoords.GetRow(),
|
MakeCellVisible( m_currentCellCoords.GetRow(),
|
||||||
m_currentCellCoords.GetCol() - 1 );
|
m_currentCellCoords.GetCol() - 1 );
|
||||||
|
|
||||||
SetCurrentCell( m_currentCellCoords.GetRow(),
|
SetCurrentCell( m_currentCellCoords.GetRow(),
|
||||||
m_currentCellCoords.GetCol() - 1 );
|
m_currentCellCoords.GetCol() - 1 );
|
||||||
|
|
||||||
@@ -3377,7 +3385,7 @@ bool wxGrid::MoveCursorRight()
|
|||||||
{
|
{
|
||||||
MakeCellVisible( m_currentCellCoords.GetRow(),
|
MakeCellVisible( m_currentCellCoords.GetRow(),
|
||||||
m_currentCellCoords.GetCol() + 1 );
|
m_currentCellCoords.GetCol() + 1 );
|
||||||
|
|
||||||
SetCurrentCell( m_currentCellCoords.GetRow(),
|
SetCurrentCell( m_currentCellCoords.GetRow(),
|
||||||
m_currentCellCoords.GetCol() + 1 );
|
m_currentCellCoords.GetCol() + 1 );
|
||||||
|
|
||||||
@@ -3391,27 +3399,27 @@ bool wxGrid::MoveCursorRight()
|
|||||||
bool wxGrid::MovePageUp()
|
bool wxGrid::MovePageUp()
|
||||||
{
|
{
|
||||||
if ( m_currentCellCoords == wxGridNoCellCoords ) return FALSE;
|
if ( m_currentCellCoords == wxGridNoCellCoords ) return FALSE;
|
||||||
|
|
||||||
int row = m_currentCellCoords.GetRow();
|
int row = m_currentCellCoords.GetRow();
|
||||||
if ( row > 0 )
|
if ( row > 0 )
|
||||||
{
|
{
|
||||||
int cw, ch;
|
int cw, ch;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
|
|
||||||
int y = m_rowBottoms[ row ] - m_rowHeights[ row ];
|
int y = m_rowBottoms[ row ] - m_rowHeights[ row ];
|
||||||
int newRow = YToRow( y - ch + 1 );
|
int newRow = YToRow( y - ch + 1 );
|
||||||
if ( newRow == -1 )
|
if ( newRow == -1 )
|
||||||
{
|
{
|
||||||
newRow = 0;
|
newRow = 0;
|
||||||
}
|
}
|
||||||
else if ( newRow == row )
|
else if ( newRow == row )
|
||||||
{
|
{
|
||||||
newRow = row - 1;
|
newRow = row - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MakeCellVisible( newRow, m_currentCellCoords.GetCol() );
|
MakeCellVisible( newRow, m_currentCellCoords.GetCol() );
|
||||||
SetCurrentCell( newRow, m_currentCellCoords.GetCol() );
|
SetCurrentCell( newRow, m_currentCellCoords.GetCol() );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3421,27 +3429,27 @@ bool wxGrid::MovePageUp()
|
|||||||
bool wxGrid::MovePageDown()
|
bool wxGrid::MovePageDown()
|
||||||
{
|
{
|
||||||
if ( m_currentCellCoords == wxGridNoCellCoords ) return FALSE;
|
if ( m_currentCellCoords == wxGridNoCellCoords ) return FALSE;
|
||||||
|
|
||||||
int row = m_currentCellCoords.GetRow();
|
int row = m_currentCellCoords.GetRow();
|
||||||
if ( row < m_numRows )
|
if ( row < m_numRows )
|
||||||
{
|
{
|
||||||
int cw, ch;
|
int cw, ch;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
|
|
||||||
int y = m_rowBottoms[ row ] - m_rowHeights[ row ];
|
int y = m_rowBottoms[ row ] - m_rowHeights[ row ];
|
||||||
int newRow = YToRow( y + ch );
|
int newRow = YToRow( y + ch );
|
||||||
if ( newRow == -1 )
|
if ( newRow == -1 )
|
||||||
{
|
{
|
||||||
newRow = m_numRows - 1;
|
newRow = m_numRows - 1;
|
||||||
}
|
}
|
||||||
else if ( newRow == row )
|
else if ( newRow == row )
|
||||||
{
|
{
|
||||||
newRow = row + 1;
|
newRow = row + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MakeCellVisible( newRow, m_currentCellCoords.GetCol() );
|
MakeCellVisible( newRow, m_currentCellCoords.GetCol() );
|
||||||
SetCurrentCell( newRow, m_currentCellCoords.GetCol() );
|
SetCurrentCell( newRow, m_currentCellCoords.GetCol() );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3781,7 +3789,7 @@ void wxGrid::SetRowLabelAlignment( int horiz, int vert )
|
|||||||
{
|
{
|
||||||
m_rowLabelWin->Refresh();
|
m_rowLabelWin->Refresh();
|
||||||
m_colLabelWin->Refresh();
|
m_colLabelWin->Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxGrid::SetColLabelAlignment( int horiz, int vert )
|
void wxGrid::SetColLabelAlignment( int horiz, int vert )
|
||||||
@@ -3800,7 +3808,7 @@ void wxGrid::SetColLabelAlignment( int horiz, int vert )
|
|||||||
{
|
{
|
||||||
m_rowLabelWin->Refresh();
|
m_rowLabelWin->Refresh();
|
||||||
m_colLabelWin->Refresh();
|
m_colLabelWin->Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxGrid::SetRowLabelValue( int row, const wxString& s )
|
void wxGrid::SetRowLabelValue( int row, const wxString& s )
|
||||||
@@ -3836,7 +3844,7 @@ void wxGrid::SetGridLineColour( const wxColour& colour )
|
|||||||
if ( m_gridLineColour != colour )
|
if ( m_gridLineColour != colour )
|
||||||
{
|
{
|
||||||
m_gridLineColour = colour;
|
m_gridLineColour = colour;
|
||||||
|
|
||||||
wxClientDC dc( m_gridWin );
|
wxClientDC dc( m_gridWin );
|
||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
DrawAllGridLines( dc );
|
DrawAllGridLines( dc );
|
||||||
@@ -3970,19 +3978,19 @@ void wxGrid::SetDefaultRowSize( int height, bool resizeExistingRows )
|
|||||||
void wxGrid::SetRowSize( int row, int height )
|
void wxGrid::SetRowSize( int row, int height )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if ( row >= 0 && row < m_numRows )
|
if ( row >= 0 && row < m_numRows )
|
||||||
{
|
{
|
||||||
int h = wxMax( 0, height );
|
int h = wxMax( 0, height );
|
||||||
int diff = h - m_rowHeights[row];
|
int diff = h - m_rowHeights[row];
|
||||||
|
|
||||||
m_rowHeights[row] = h;
|
m_rowHeights[row] = h;
|
||||||
for ( i = row; i < m_numRows; i++ )
|
for ( i = row; i < m_numRows; i++ )
|
||||||
{
|
{
|
||||||
m_rowBottoms[i] += diff;
|
m_rowBottoms[i] += diff;
|
||||||
}
|
}
|
||||||
CalcDimensions();
|
CalcDimensions();
|
||||||
|
|
||||||
// Note: we are ending the event *after* doing
|
// Note: we are ending the event *after* doing
|
||||||
// default processing in this case
|
// default processing in this case
|
||||||
//
|
//
|
||||||
@@ -4016,7 +4024,7 @@ void wxGrid::SetDefaultColSize( int width, bool resizeExistingCols )
|
|||||||
void wxGrid::SetColSize( int col, int width )
|
void wxGrid::SetColSize( int col, int width )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if ( col >= 0 && col < m_numCols )
|
if ( col >= 0 && col < m_numCols )
|
||||||
{
|
{
|
||||||
int w = wxMax( 0, width );
|
int w = wxMax( 0, width );
|
||||||
@@ -4028,7 +4036,7 @@ void wxGrid::SetColSize( int col, int width )
|
|||||||
m_colRights[i] += diff;
|
m_colRights[i] += diff;
|
||||||
}
|
}
|
||||||
CalcDimensions();
|
CalcDimensions();
|
||||||
|
|
||||||
// Note: we are ending the event *after* doing
|
// Note: we are ending the event *after* doing
|
||||||
// default processing in this case
|
// default processing in this case
|
||||||
//
|
//
|
||||||
@@ -4106,9 +4114,9 @@ void wxGrid::SetCellValue( int row, int col, const wxString& s )
|
|||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
DrawCell( dc, wxGridCellCoords(row, col) );
|
DrawCell( dc, wxGridCellCoords(row, col) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 // TODO: edit in place
|
#if 0 // TODO: edit in place
|
||||||
|
|
||||||
if ( m_currentCellCoords.GetRow() == row &&
|
if ( m_currentCellCoords.GetRow() == row &&
|
||||||
m_currentCellCoords.GetCol() == col )
|
m_currentCellCoords.GetCol() == col )
|
||||||
{
|
{
|
||||||
@@ -4127,7 +4135,7 @@ void wxGrid::SetCellValue( int row, int col, const wxString& s )
|
|||||||
void wxGrid::SelectRow( int row, bool addToSelected )
|
void wxGrid::SelectRow( int row, bool addToSelected )
|
||||||
{
|
{
|
||||||
wxRect r;
|
wxRect r;
|
||||||
|
|
||||||
if ( IsSelection() && addToSelected )
|
if ( IsSelection() && addToSelected )
|
||||||
{
|
{
|
||||||
if ( m_selectedTopLeft.GetRow() > row )
|
if ( m_selectedTopLeft.GetRow() > row )
|
||||||
@@ -4151,7 +4159,7 @@ void wxGrid::SelectRow( int row, bool addToSelected )
|
|||||||
r = SelectionToDeviceRect();
|
r = SelectionToDeviceRect();
|
||||||
ClearSelection();
|
ClearSelection();
|
||||||
if ( r != wxGridNoCellRect ) m_gridWin->Refresh( TRUE, &r );
|
if ( r != wxGridNoCellRect ) m_gridWin->Refresh( TRUE, &r );
|
||||||
|
|
||||||
m_selectedTopLeft.Set( row, 0 );
|
m_selectedTopLeft.Set( row, 0 );
|
||||||
m_selectedBottomRight.Set( row, m_numCols-1 );
|
m_selectedBottomRight.Set( row, m_numCols-1 );
|
||||||
r = SelectionToDeviceRect();
|
r = SelectionToDeviceRect();
|
||||||
@@ -4171,7 +4179,7 @@ void wxGrid::SelectRow( int row, bool addToSelected )
|
|||||||
void wxGrid::SelectCol( int col, bool addToSelected )
|
void wxGrid::SelectCol( int col, bool addToSelected )
|
||||||
{
|
{
|
||||||
wxRect r;
|
wxRect r;
|
||||||
|
|
||||||
if ( IsSelection() && addToSelected )
|
if ( IsSelection() && addToSelected )
|
||||||
{
|
{
|
||||||
if ( m_selectedTopLeft.GetCol() > col )
|
if ( m_selectedTopLeft.GetCol() > col )
|
||||||
@@ -4195,7 +4203,7 @@ void wxGrid::SelectCol( int col, bool addToSelected )
|
|||||||
r = SelectionToDeviceRect();
|
r = SelectionToDeviceRect();
|
||||||
ClearSelection();
|
ClearSelection();
|
||||||
if ( r != wxGridNoCellRect ) m_gridWin->Refresh( TRUE, &r );
|
if ( r != wxGridNoCellRect ) m_gridWin->Refresh( TRUE, &r );
|
||||||
|
|
||||||
m_selectedTopLeft.Set( 0, col );
|
m_selectedTopLeft.Set( 0, col );
|
||||||
m_selectedBottomRight.Set( m_numRows-1, col );
|
m_selectedBottomRight.Set( m_numRows-1, col );
|
||||||
r = SelectionToDeviceRect();
|
r = SelectionToDeviceRect();
|
||||||
@@ -4232,7 +4240,7 @@ void wxGrid::SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol )
|
|||||||
|
|
||||||
m_selectedTopLeft.Set( topRow, leftCol );
|
m_selectedTopLeft.Set( topRow, leftCol );
|
||||||
m_selectedBottomRight.Set( bottomRow, rightCol );
|
m_selectedBottomRight.Set( bottomRow, rightCol );
|
||||||
|
|
||||||
wxRect r;
|
wxRect r;
|
||||||
r = SelectionToDeviceRect();
|
r = SelectionToDeviceRect();
|
||||||
m_gridWin->Refresh( TRUE, &r );
|
m_gridWin->Refresh( TRUE, &r );
|
||||||
@@ -4303,10 +4311,10 @@ wxRect wxGrid::SelectionToDeviceRect()
|
|||||||
int left, top, right, bottom;
|
int left, top, right, bottom;
|
||||||
CalcScrolledPosition( rect.GetLeft(), rect.GetTop(), &left, &top );
|
CalcScrolledPosition( rect.GetLeft(), rect.GetTop(), &left, &top );
|
||||||
CalcScrolledPosition( rect.GetRight(), rect.GetBottom(), &right, &bottom );
|
CalcScrolledPosition( rect.GetRight(), rect.GetBottom(), &right, &bottom );
|
||||||
|
|
||||||
int cw, ch;
|
int cw, ch;
|
||||||
m_gridWin->GetClientSize( &cw, &ch );
|
m_gridWin->GetClientSize( &cw, &ch );
|
||||||
|
|
||||||
rect.SetLeft( wxMax(0, left) );
|
rect.SetLeft( wxMax(0, left) );
|
||||||
rect.SetTop( wxMax(0, top) );
|
rect.SetTop( wxMax(0, top) );
|
||||||
rect.SetRight( wxMin(cw, right) );
|
rect.SetRight( wxMin(cw, right) );
|
||||||
|
Reference in New Issue
Block a user