From 60ff3b9976b7d84895f42b4136195612c3a03cb5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 3 Feb 2000 13:30:28 +0000 Subject: [PATCH] re-checking in files in Unix mode git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5827 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/grid.h | 586 ++++++++++++++++++++------------------ src/generic/grid.cpp | 310 ++++++++++---------- 2 files changed, 460 insertions(+), 436 deletions(-) diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index 93cfea0aea..7102bf12b5 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -63,9 +63,7 @@ class WXDLLEXPORT wxGrid; class WXDLLEXPORT wxGridTableBase : public wxObject { - wxGrid * m_view; - - public: +public: wxGridTableBase(); virtual ~wxGridTableBase(); @@ -76,7 +74,7 @@ class WXDLLEXPORT wxGridTableBase : public wxObject virtual wxString GetValue( int row, int col ) = 0; virtual void SetValue( int row, int col, const wxString& s ) = 0; virtual bool IsEmptyCell( int row, int col ) = 0; - + // Overriding these is optional // virtual void SetView( wxGrid *grid ) { m_view = grid; } @@ -94,7 +92,10 @@ class WXDLLEXPORT wxGridTableBase : public wxObject virtual wxString GetColLabelValue( int col ); virtual void SetRowLabelValue( int WXUNUSED(row), const wxString& ) {} virtual void SetColLabelValue( int WXUNUSED(col), const wxString& ) {} - + +private: + wxGrid * m_view; + DECLARE_ABSTRACT_CLASS( wxGridTableBase ); }; @@ -102,7 +103,8 @@ class WXDLLEXPORT wxGridTableBase : public wxObject // IDs for messages sent from grid table to view // -enum wxGridTableRequest { +enum wxGridTableRequest +{ wxGRIDTABLE_REQUEST_VIEW_GET_VALUES = 2000, wxGRIDTABLE_REQUEST_VIEW_SEND_VALUES, wxGRIDTABLE_NOTIFY_ROWS_INSERTED, @@ -115,12 +117,7 @@ enum wxGridTableRequest { class WXDLLEXPORT wxGridTableMessage { - wxGridTableBase *m_table; - int m_id; - int m_comInt1; - int m_comInt2; - - public: +public: wxGridTableMessage(); wxGridTableMessage( wxGridTableBase *table, int id, int comInt1 = -1, @@ -133,7 +130,13 @@ class WXDLLEXPORT wxGridTableMessage void SetCommandInt( int comInt1 ) { m_comInt1 = comInt1; } int GetCommandInt() { return m_comInt1; } 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 { - 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; - - public: +public: wxGridStringTable(); wxGridStringTable( int numRows, int numCols ); ~wxGridStringTable(); @@ -174,7 +169,7 @@ class WXDLLEXPORT wxGridStringTable : public wxGridTableBase wxString GetValue( int row, int col ); void SetValue( int row, int col, const wxString& s ); bool IsEmptyCell( int row, int col ); - + // overridden functions from wxGridTableBase // void Clear(); @@ -189,7 +184,16 @@ class WXDLLEXPORT wxGridStringTable : public wxGridTableBase void SetColLabelValue( int col, const wxString& ); wxString GetRowLabelValue( int row ); 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 ) }; @@ -203,10 +207,7 @@ class WXDLLEXPORT wxGridStringTable : public wxGridTableBase class WXDLLEXPORT wxGridCellCoords { - long m_row; - long m_col; - - public: +public: wxGridCellCoords() { m_row = m_col = -1; } wxGridCellCoords( int r, int c ) { m_row = r; m_col = c; } @@ -217,7 +218,7 @@ class WXDLLEXPORT wxGridCellCoords long GetCol() const { return m_col; } void SetCol( long n ) { m_col = n; } void Set( long row, long col ) { m_row = row; m_col = col; } - + wxGridCellCoords& operator=( const wxGridCellCoords& other ) { if ( &other != this ) @@ -242,6 +243,10 @@ class WXDLLEXPORT wxGridCellCoords { 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 -// 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 class WXDLLEXPORT wxGridTextCtrl : public wxTextCtrl { - 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& ); - - public: +public: wxGridTextCtrl() {} wxGridTextCtrl( wxWindow *, wxGrid *, @@ -285,7 +280,18 @@ class WXDLLEXPORT wxGridTextCtrl : public wxTextCtrl void SetStartValue( const wxString& ); 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_EVENT_TABLE() }; @@ -293,17 +299,18 @@ class WXDLLEXPORT wxGridTextCtrl : public wxTextCtrl 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; - + void OnPaint( wxPaintEvent& event ); void OnMouseEvent( wxMouseEvent& event ); void OnKeyDown( wxKeyEvent& event ); -public: - wxGridRowLabelWindow() {} - wxGridRowLabelWindow( wxGrid *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size ); - DECLARE_DYNAMIC_CLASS(wxGridRowLabelWindow) DECLARE_EVENT_TABLE() }; @@ -311,17 +318,18 @@ public: 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; - + void OnPaint( wxPaintEvent &event ); void OnMouseEvent( wxMouseEvent& event ); void OnKeyDown( wxKeyEvent& event ); -public: - wxGridColLabelWindow() {} - wxGridColLabelWindow( wxGrid *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size ); - DECLARE_DYNAMIC_CLASS(wxGridColLabelWindow) DECLARE_EVENT_TABLE() }; @@ -329,15 +337,16 @@ public: class WXDLLEXPORT wxGridCornerLabelWindow : public wxWindow { +public: + wxGridCornerLabelWindow() { m_owner = (wxGrid *)NULL; } + wxGridCornerLabelWindow( wxGrid *parent, wxWindowID id, + const wxPoint &pos, const wxSize &size ); + +private: wxGrid *m_owner; - + void OnMouseEvent( wxMouseEvent& event ); void OnKeyDown( wxKeyEvent& event ); - - public: - wxGridCornerLabelWindow() {} - wxGridCornerLabelWindow( wxGrid *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size ); DECLARE_DYNAMIC_CLASS(wxGridCornerLabelWindow) DECLARE_EVENT_TABLE() @@ -347,17 +356,15 @@ class WXDLLEXPORT wxGridCornerLabelWindow : public wxWindow class WXDLLEXPORT wxGridWindow : public wxPanel { - wxGrid *m_owner; - wxGridRowLabelWindow *m_rowLabelWin; - wxGridColLabelWindow *m_colLabelWin; - - void OnPaint( wxPaintEvent &event ); - void OnMouseEvent( wxMouseEvent& event ); - void OnKeyDown( wxKeyEvent& ); - public: - wxGridWindow() {} - wxGridWindow( wxGrid *parent, + 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 ); @@ -365,138 +372,27 @@ public: void ScrollWindow( int dx, int dy, const wxRect *rect ); - DECLARE_DYNAMIC_CLASS(wxGridWindow) - DECLARE_EVENT_TABLE() -}; - - - -class WXDLLEXPORT wxGrid : public wxScrolledWindow -{ - protected: - bool m_created; - - wxGridWindow *m_gridWin; +private: + wxGrid *m_owner; 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 OnPaint( wxPaintEvent &event ); + void OnMouseEvent( wxMouseEvent& event ); void OnKeyDown( wxKeyEvent& ); + DECLARE_DYNAMIC_CLASS(wxGridWindow) + DECLARE_EVENT_TABLE() +}; - 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: +class WXDLLEXPORT wxGrid : public wxScrolledWindow +{ +public: wxGrid() { Create(); } - + wxGrid( wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, @@ -504,33 +400,33 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow long style = 0, const wxString& name = wxPanelNameStr ); - ~wxGrid(); + ~wxGrid(); bool CreateGrid( int numRows, int numCols ); - + // ------ grid dimensions // int GetNumberRows() { return m_numRows; } int GetNumberCols() { return m_numCols; } - + // ------ display update functions // - void CalcRowLabelsExposed( wxRegion& reg ); - void CalcColLabelsExposed( wxRegion& reg ); - void CalcCellsExposed( wxRegion& reg ); + void CalcRowLabelsExposed( wxRegion& reg ); + void CalcColLabelsExposed( wxRegion& reg ); + void CalcCellsExposed( wxRegion& reg ); + - // ------ event handlers // void ProcessRowLabelMouseEvent( wxMouseEvent& event ); void ProcessColLabelMouseEvent( wxMouseEvent& event ); void ProcessCornerLabelMouseEvent( wxMouseEvent& event ); - void ProcessGridCellMouseEvent( wxMouseEvent& event ); + void ProcessGridCellMouseEvent( wxMouseEvent& event ); bool ProcessTableMessage( wxGridTableMessage& ); - + wxGridTableBase * GetTable() const { return m_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 InsertCols( int pos = 0, 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 DrawCellBorder( wxDC& dc, const wxGridCellCoords& ); @@ -553,7 +449,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow void DrawRowLabel( wxDC& dc, int row ); void DrawColLabels( wxDC& dc ); void DrawColLabel( wxDC& dc, int col ); - + // ------ Cell text drawing functions // @@ -565,11 +461,11 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow // strings and return the number of lines // void StringToLines( const wxString& value, wxArrayString& lines ); - + void GetTextBoxSize( wxDC& dc, wxArrayString& lines, long *width, long *height ); - + // ------ // 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; } 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 ); #endif @@ -598,9 +494,9 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow void SetEditControlValue( const wxString& s = wxEmptyString ); void SaveEditControlValue(); - + // ------ 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 // coordinates for mouse events etc. // @@ -617,7 +513,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow int GetGridCursorRow() { return m_currentCellCoords.GetRow(); } int GetGridCursorCol() { return m_currentCellCoords.GetCol(); } - + // check to see if a cell is either wholly visible (the default arg) or // at least partially visible in the grid window // @@ -628,7 +524,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow void MakeCellVisible( const wxGridCellCoords& coords ) { MakeCellVisible( coords.GetRow(), coords.GetCol() ); } - + // ------ grid cursor movement functions // void SetGridCursor( int row, int col ) @@ -645,12 +541,12 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow bool MoveCursorLeftBlock(); bool MoveCursorRightBlock(); - + // ------ label and gridline formatting // int GetDefaultRowLabelSize() { return WXGRID_DEFAULT_ROW_LABEL_WIDTH; } 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; } wxColour GetLabelBackgroundColour() { return m_labelBackgroundColour; } wxColour GetLabelTextColour() { return m_labelTextColour; } @@ -690,7 +586,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow wxFont GetCellFont( int row, int col ); void GetDefaultCellAlignment( int *horiz, int *vert ); void GetCellAlignment( int row, int col, int *horiz, int *vert ); - + void SetDefaultRowSize( int height, bool resizeExistingRows = FALSE ); void SetRowSize( int row, int height ); void SetDefaultColSize( int width, bool resizeExistingCols = FALSE ); @@ -721,18 +617,18 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow wxString GetCellValue( const wxGridCellCoords& coords ) { return GetCellValue( coords.GetRow(), coords.GetCol() ); } - + void SetCellValue( int row, int col, const wxString& s ); void SetCellValue( const wxGridCellCoords& coords, const wxString& s ) { SetCellValue( coords.GetRow(), coords.GetCol(), s ); } - + // ------ selections of blocks of cells // void SelectRow( int row, bool addToSelected = FALSE ); void SelectCol( int col, bool addToSelected = FALSE ); - + void SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol ); void SelectBlock( const wxGridCellCoords& topLeft, @@ -741,7 +637,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow bottomRight.GetRow(), bottomRight.GetCol() ); } void SelectAll(); - + bool IsSelection() { return ( m_selectedTopLeft != 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. // wxRect SelectionToDeviceRect(); - - + + // ------ For compatibility with previous wxGrid only... // @@ -791,13 +687,13 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow long style = 0, const wxString& name = wxPanelNameStr ) : wxScrolledWindow( parent, -1, wxPoint(x,y), wxSize(w,h), style, name ) - { + { Create(); - } + } void SetCellValue( const wxString& val, int row, int col ) { SetCellValue( row, col, val ); } - + void UpdateDimensions() { CalcDimensions(); } @@ -805,28 +701,28 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow int GetCols() { return GetNumberCols(); } int GetCursorRow() { return GetGridCursorRow(); } int GetCursorColumn() { return GetGridCursorCol(); } - + int GetScrollPosX() { return 0; } int GetScrollPosY() { return 0; } - + void SetScrollX( int x ) { } void SetScrollY( int y ) { } void SetColumnWidth( int col, int width ) { SetColSize( col, width ); } - + int GetColumnWidth( int col ) { return GetColSize( col ); } - + void SetRowHeight( int row, int height ) { SetRowSize( row, height ); } - + int GetRowHeight( int row ) { return GetRowSize( row ); } - + int GetViewHeight() // returned num whole rows visible { return 0; } - + int GetViewWidth() // returned num whole cols visible { return 0; } @@ -876,7 +772,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow else SetRowLabelValue( pos, val ); } - + wxString GetLabelValue( int orientation, int pos) { if ( orientation == wxHORIZONTAL ) @@ -885,30 +781,30 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow return GetRowLabelValue( pos ); } - wxFont GetCellTextFont() const + wxFont GetCellTextFont() const { return m_defaultCellFont; } - + wxFont GetCellTextFont(int WXUNUSED(row), int WXUNUSED(col)) const { return m_defaultCellFont; } - + void SetCellTextFont(const wxFont& fnt) { SetDefaultCellFont( fnt ); } - + void SetCellTextFont(const wxFont& fnt, int row, int col) { SetCellFont( row, col, fnt ); } - + void SetCellTextColour(const wxColour& val, int row, int col) { SetCellTextColour( row, col, val ); } - + void SetCellTextColour(const wxColour& col) { SetDefaultCellTextColour( col ); } - + void SetCellBackgroundColour(const wxColour& col) { SetDefaultCellBackgroundColour( col ); } - + void SetCellBackgroundColour(const wxColour& colour, int row, int col) { SetCellBackgroundColour( row, col, colour ); } - + bool GetEditable() { return IsEditable(); } void SetEditable( bool edit = TRUE ) { EnableEditing( edit ); } bool GetEditInPlace() { return IsCellEditControlEnabled(); } @@ -922,7 +818,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow void SetDividerPen(const wxPen& WXUNUSED(pen)) { } wxPen& GetDividerPen() const { return wxNullPen; } void OnActivate(bool WXUNUSED(active)) {} - + // ******** End of compatibility functions ********** @@ -937,7 +833,127 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow wxGRID_CHOICE, 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_EVENT_TABLE() }; @@ -952,17 +968,7 @@ class WXDLLEXPORT wxGrid : public wxScrolledWindow class WXDLLEXPORT wxGridEvent : public wxNotifyEvent { - protected: - 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: +public: wxGridEvent() : 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) @@ -981,22 +987,23 @@ class WXDLLEXPORT wxGridEvent : public wxNotifyEvent bool ShiftDown() { return m_shift; } bool AltDown() { return m_alt; } - DECLARE_DYNAMIC_CLASS(wxGridEvent) -}; - - -class WXDLLEXPORT wxGridSizeEvent : public wxNotifyEvent -{ - protected: - int m_rowOrCol; +protected: + 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: + + DECLARE_DYNAMIC_CLASS(wxGridEvent) +}; + + +class WXDLLEXPORT wxGridSizeEvent : public wxNotifyEvent +{ +public: wxGridSizeEvent() : wxNotifyEvent(), m_rowOrCol(-1), m_x(-1), m_y(-1), 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 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) }; class WXDLLEXPORT wxGridRangeSelectEvent : public wxNotifyEvent { - protected: - wxGridCellCoords m_topLeft; - wxGridCellCoords m_bottomRight; - bool m_control; - bool m_meta; - bool m_shift; - bool m_alt; - - public: +public: wxGridRangeSelectEvent() - : wxNotifyEvent() - { - m_topLeft = wxGridNoCellCoords; - m_bottomRight = wxGridNoCellCoords; - m_control = FALSE; - m_meta = FALSE; - m_shift = FALSE; - m_alt = FALSE; - } + : wxNotifyEvent() + { + m_topLeft = wxGridNoCellCoords; + m_bottomRight = wxGridNoCellCoords; + m_control = FALSE; + m_meta = FALSE; + m_shift = FALSE; + m_alt = FALSE; + } wxGridRangeSelectEvent(int id, wxEventType type, wxObject* obj, - const wxGridCellCoords& topLeft, - const wxGridCellCoords& bottomRight, - bool control=FALSE, bool shift=FALSE, - bool alt=FALSE, bool meta=FALSE); + const wxGridCellCoords& topLeft, + const wxGridCellCoords& bottomRight, + bool control=FALSE, bool shift=FALSE, + bool alt=FALSE, bool meta=FALSE); wxGridCellCoords GetTopLeftCoords() { return m_topLeft; } wxGridCellCoords GetBottomRightCoords() { return m_bottomRight; } @@ -1057,6 +1065,14 @@ class WXDLLEXPORT wxGridRangeSelectEvent : public wxNotifyEvent bool ShiftDown() { return m_shift; } 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) }; @@ -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_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_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 }, diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 51552e348c..623b368809 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -664,8 +664,8 @@ BEGIN_EVENT_TABLE( wxGridRowLabelWindow, wxWindow ) EVT_KEY_DOWN( wxGridRowLabelWindow::OnKeyDown ) END_EVENT_TABLE() -wxGridRowLabelWindow::wxGridRowLabelWindow( wxGrid *parent, - wxWindowID id, +wxGridRowLabelWindow::wxGridRowLabelWindow( wxGrid *parent, + wxWindowID id, const wxPoint &pos, const wxSize &size ) : wxWindow( parent, id, pos, size ) { @@ -681,11 +681,11 @@ void wxGridRowLabelWindow::OnPaint( wxPaintEvent &event ) // set the y coord - MB // // m_owner->PrepareDC( dc ); - + wxCoord x, y; m_owner->CalcUnscrolledPosition( 0, 0, &x, &y ); dc.SetDeviceOrigin( 0, -y ); - + m_owner->CalcRowLabelsExposed( GetUpdateRegion() ); m_owner->DrawRowLabels( dc ); } @@ -717,8 +717,8 @@ BEGIN_EVENT_TABLE( wxGridColLabelWindow, wxWindow ) EVT_KEY_DOWN( wxGridColLabelWindow::OnKeyDown ) END_EVENT_TABLE() -wxGridColLabelWindow::wxGridColLabelWindow( wxGrid *parent, - wxWindowID id, +wxGridColLabelWindow::wxGridColLabelWindow( wxGrid *parent, + wxWindowID id, const wxPoint &pos, const wxSize &size ) : wxWindow( parent, id, pos, size ) { @@ -734,13 +734,13 @@ void wxGridColLabelWindow::OnPaint( wxPaintEvent &event ) // set the x coord - MB // // m_owner->PrepareDC( dc ); - + wxCoord x, y; m_owner->CalcUnscrolledPosition( 0, 0, &x, &y ); dc.SetDeviceOrigin( -x, 0 ); - m_owner->CalcColLabelsExposed( GetUpdateRegion() ); - m_owner->DrawColLabels( dc ); + m_owner->CalcColLabelsExposed( GetUpdateRegion() ); + m_owner->DrawColLabels( dc ); } @@ -769,8 +769,8 @@ BEGIN_EVENT_TABLE( wxGridCornerLabelWindow, wxWindow ) EVT_KEY_DOWN( wxGridCornerLabelWindow::OnKeyDown ) END_EVENT_TABLE() -wxGridCornerLabelWindow::wxGridCornerLabelWindow( wxGrid *parent, - wxWindowID id, +wxGridCornerLabelWindow::wxGridCornerLabelWindow( wxGrid *parent, + wxWindowID id, const wxPoint &pos, const wxSize &size ) : wxWindow( parent, id, pos, size, wxRAISED_BORDER ) { @@ -805,8 +805,8 @@ BEGIN_EVENT_TABLE( wxGridWindow, wxPanel ) EVT_KEY_DOWN( wxGridWindow::OnKeyDown ) END_EVENT_TABLE() -wxGridWindow::wxGridWindow( wxGrid *parent, - wxGridRowLabelWindow *rowLblWin, +wxGridWindow::wxGridWindow( wxGrid *parent, + wxGridRowLabelWindow *rowLblWin, wxGridColLabelWindow *colLblWin, wxWindowID id, const wxPoint &pos, const wxSize &size ) : wxPanel( parent, id, pos, size, wxSUNKEN_BORDER, "grid window" ) @@ -814,7 +814,7 @@ wxGridWindow::wxGridWindow( wxGrid *parent, m_owner = parent; m_rowLabelWin = rowLblWin; m_colLabelWin = colLblWin; - + SetBackgroundColour( "WHITE" ); } @@ -881,42 +881,42 @@ wxGrid::wxGrid( wxWindow *parent, int colLblH = WXGRID_DEFAULT_COL_LABEL_HEIGHT; int rowLblW = WXGRID_DEFAULT_ROW_LABEL_WIDTH; - m_rowLabelWin = new wxGridRowLabelWindow( this, - -1, - wxDefaultPosition, + m_rowLabelWin = new wxGridRowLabelWindow( this, + -1, + wxDefaultPosition, wxSize(rowLblW,-1) ); m_colLabelWin = new wxGridColLabelWindow( this, -1, wxDefaultPosition, wxSize(-1, colLblH ) ); - + m_cornerLabelWin = new wxGridCornerLabelWindow( this, -1, wxDefaultPosition, wxSize(rowLblW, colLblH ) ); - - m_gridWin = new wxGridWindow( this, - m_rowLabelWin, - m_colLabelWin, - -1, - wxDefaultPosition, + + m_gridWin = new wxGridWindow( this, + m_rowLabelWin, + m_colLabelWin, + -1, + wxDefaultPosition, wxDefaultSize ); SetTargetWindow( m_gridWin ); - + m_mainSizer = new wxBoxSizer( wxVERTICAL ); - + m_topSizer = new wxBoxSizer( wxHORIZONTAL ); m_topSizer->Add( m_cornerLabelWin, 0 ); m_topSizer->Add( m_colLabelWin, 1 ); - + m_mainSizer->Add( m_topSizer, 0, wxEXPAND ); - + m_middleSizer = new wxBoxSizer( wxHORIZONTAL ); m_middleSizer->Add( m_rowLabelWin, 0, wxEXPAND ); m_middleSizer->Add( m_gridWin, 1, wxEXPAND ); - + m_mainSizer->Add( m_middleSizer, 1, wxEXPAND ); SetAutoLayout( TRUE ); @@ -940,7 +940,7 @@ void wxGrid::Create() m_rowLabelWin = (wxGridRowLabelWindow *) NULL; m_colLabelWin = (wxGridColLabelWindow *) 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_colLabelHeight = WXGRID_DEFAULT_COL_LABEL_HEIGHT; - m_labelBackgroundColour = m_rowLabelWin->GetBackgroundColour(); - m_labelTextColour = wxColour( "BLACK" ); + if ( m_rowLabelWin ) + { + m_labelBackgroundColour = m_rowLabelWin->GetBackgroundColour(); + } + else + { + m_labelBackgroundColour = wxColour( _T("WHITE") ); + } + + m_labelTextColour = wxColour( _T("BLACK") ); // TODO: something better than this ? // @@ -1076,12 +1084,12 @@ void wxGrid::CalcDimensions() { int right = m_colRights[ m_numCols-1 ] + 20; int bottom = m_rowBottoms[ m_numRows-1 ] + 20; - + // TODO: restore the scroll position that we had before sizing // int x, y; GetViewStart( &x, &y ); - SetScrollbars( 10, 10, + SetScrollbars( 10, 10, right/10, bottom/10, x, y ); } @@ -1110,7 +1118,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) int bottom = 0; if ( pos > 0 ) bottom = m_rowBottoms[pos-1]; - + for ( i = pos; i < m_numRows; i++ ) { bottom += m_rowHeights[i]; @@ -1134,7 +1142,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) int bottom = 0; if ( oldNumRows > 0 ) bottom = m_rowBottoms[oldNumRows-1]; - + for ( i = oldNumRows; i < m_numRows; i++ ) { bottom += m_rowHeights[i]; @@ -1174,7 +1182,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) m_rowBottoms[i] = h; } } - + CalcDimensions(); } return TRUE; @@ -1192,7 +1200,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) int right = 0; if ( pos > 0 ) right = m_colRights[pos-1]; - + for ( i = pos; i < m_numCols; i++ ) { right += m_colWidths[i]; @@ -1216,7 +1224,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) int right = 0; if ( oldNumCols > 0 ) right = m_colRights[oldNumCols-1]; - + for ( i = oldNumCols; i < m_numCols; i++ ) { right += m_colWidths[i]; @@ -1246,7 +1254,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) #endif m_currentCellCoords = wxGridNoCellCoords; } - else + else { if ( m_currentCellCoords.GetCol() >= m_numCols ) m_currentCellCoords.Set( 0, 0 ); @@ -1307,10 +1315,10 @@ void wxGrid::CalcRowLabelsExposed( wxRegion& reg ) rowTop = m_rowBottoms[row] - m_rowHeights[row]; if ( rowTop > bottom ) break; - + m_rowLabelsExposed.Add( row ); } - + iter++ ; } } @@ -1353,13 +1361,13 @@ void wxGrid::CalcColLabelsExposed( wxRegion& reg ) for ( col = 0; col < m_numCols; col++ ) { if ( m_colRights[col] < left ) continue; - + colLeft = m_colRights[col] - m_colWidths[col]; if ( colLeft > right ) break; m_colLabelsExposed.Add( col ); } - + iter++ ; } } @@ -1408,21 +1416,21 @@ void wxGrid::CalcCellsExposed( wxRegion& reg ) rowTop = m_rowBottoms[row] - m_rowHeights[row]; if ( rowTop > bottom ) break; - + m_rowsExposed.Add( row ); for ( col = 0; col < m_numCols; col++ ) { if ( m_colRights[col] < left ) continue; - + colLeft = m_colRights[col] - m_colWidths[col]; if ( colLeft > right ) break; - + if ( m_colsExposed.Index( col ) == wxNOT_FOUND ) m_colsExposed.Add( col ); m_cellsExposed.Add( wxGridCellCoords( row, col ) ); } } - + iter++ ; } } @@ -1433,7 +1441,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) int x, y, row; wxPoint pos( event.GetPosition() ); CalcUnscrolledPosition( pos.x, pos.y, &x, &y ); - + if ( event.Dragging() ) { m_isDragging = TRUE; @@ -1447,7 +1455,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) int cw, ch, left, dummy; m_gridWin->GetClientSize( &cw, &ch ); CalcUnscrolledPosition( 0, 0, &left, &dummy ); - + wxClientDC dc( m_gridWin ); PrepareDC( dc ); dc.SetLogicalFunction(wxXOR); @@ -1476,7 +1484,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) m_isDragging = FALSE; - + // ------------ Left button pressed // if ( event.LeftDown() ) @@ -1513,8 +1521,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) SendEvent( EVT_GRID_LABEL_LEFT_DCLICK, row, -1, event ); } } - - + + // ------------ Left button released // else if ( event.LeftUp() ) @@ -1522,7 +1530,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) if ( m_cursorMode == WXGRID_CURSOR_RESIZE_ROW ) { m_rowLabelWin->ReleaseMouse(); - + if ( m_dragLastPos >= 0 ) { // erase the last line and resize the row @@ -1530,7 +1538,7 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) int cw, ch, left, dummy; m_gridWin->GetClientSize( &cw, &ch ); CalcUnscrolledPosition( 0, 0, &left, &dummy ); - + wxClientDC dc( m_gridWin ); PrepareDC( dc ); dc.SetLogicalFunction( wxINVERT ); @@ -1538,14 +1546,14 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) HideCellEditControl(); 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() ) { // TODO: optimize this m_rowLabelWin->Refresh(); m_gridWin->Refresh(); } - + ShowCellEditControl(); // Note: we are ending the event *after* doing @@ -1569,8 +1577,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) // no default action at the moment } } - - + + // ------------ Right double click // else if ( event.RightDClick() ) @@ -1581,8 +1589,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event ) // no default action at the moment } } - - + + // ------------ No buttons down and mouse moving // else if ( event.Moving() ) @@ -1613,7 +1621,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) int x, y, col; wxPoint pos( event.GetPosition() ); CalcUnscrolledPosition( pos.x, pos.y, &x, &y ); - + if ( event.Dragging() ) { m_isDragging = TRUE; @@ -1627,7 +1635,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) int cw, ch, dummy, top; m_gridWin->GetClientSize( &cw, &ch ); CalcUnscrolledPosition( 0, 0, &dummy, &top ); - + wxClientDC dc( m_gridWin ); PrepareDC( dc ); dc.SetLogicalFunction(wxXOR); @@ -1656,7 +1664,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) m_isDragging = FALSE; - + // ------------ Left button pressed // if ( event.LeftDown() ) @@ -1693,8 +1701,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) SendEvent( EVT_GRID_LABEL_LEFT_DCLICK, -1, col, event ); } } - - + + // ------------ Left button released // else if ( event.LeftUp() ) @@ -1702,7 +1710,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) if ( m_cursorMode == WXGRID_CURSOR_RESIZE_COL ) { m_colLabelWin->ReleaseMouse(); - + if ( m_dragLastPos >= 0 ) { // erase the last line and resize the col @@ -1710,7 +1718,7 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) int cw, ch, dummy, top; m_gridWin->GetClientSize( &cw, &ch ); CalcUnscrolledPosition( 0, 0, &dummy, &top ); - + wxClientDC dc( m_gridWin ); PrepareDC( dc ); dc.SetLogicalFunction( wxINVERT ); @@ -1718,15 +1726,15 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) HideCellEditControl(); 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() ) { // TODO: optimize this m_colLabelWin->Refresh(); m_gridWin->Refresh(); } - + ShowCellEditControl(); // Note: we are ending the event *after* doing @@ -1737,9 +1745,9 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) } m_dragLastPos = -1; - } - - + } + + // ------------ Right button down // else if ( event.RightDown() ) @@ -1750,8 +1758,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) // no default action at the moment } } - - + + // ------------ Right double click // else if ( event.RightDClick() ) @@ -1762,8 +1770,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event ) // no default action at the moment } } - - + + // ------------ No buttons down and mouse moving // else if ( event.Moving() ) @@ -1830,14 +1838,14 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event ) int x, y; wxPoint pos( event.GetPosition() ); CalcUnscrolledPosition( pos.x, pos.y, &x, &y ); - + wxGridCellCoords coords; XYToCell( x, y, coords ); - + if ( event.Dragging() ) { m_isDragging = TRUE; - + if ( m_cursorMode == WXGRID_CURSOR_SELECT_CELL ) { if ( coords != wxGridNoCellCoords ) @@ -1909,10 +1917,10 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event ) event ) ) { // no default action at the moment - } + } } - + // ------------ Right double click // else if ( event.RightDClick() ) @@ -1923,7 +1931,7 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event ) event ) ) { // no default action at the moment - } + } } } @@ -2506,10 +2514,10 @@ bool wxGrid::SetModelValues() void wxGrid::DrawGridCellArea( wxDC& dc ) { if ( !m_numRows || !m_numCols ) return; - + size_t i; size_t numCells = m_cellsExposed.GetCount(); - + for ( i = 0; i < numCells; i++ ) { DrawCell( dc, m_cellsExposed[i] ); @@ -2521,7 +2529,7 @@ void wxGrid::DrawCell( wxDC& dc, const wxGridCellCoords& coords ) { if ( m_colWidths[coords.GetCol()] <=0 || m_rowHeights[coords.GetRow()] <= 0 ) return; - + if ( m_gridLinesEnabled ) DrawCellBorder( dc, coords ); @@ -2538,11 +2546,11 @@ void wxGrid::DrawCellBorder( wxDC& dc, const wxGridCellCoords& coords ) { if ( m_colWidths[coords.GetCol()] <=0 || m_rowHeights[coords.GetRow()] <= 0 ) return; - + dc.SetPen( wxPen(GetGridLineColour(), 1, wxSOLID) ); int row = coords.GetRow(); int col = coords.GetCol(); - + // right hand border // 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 || m_rowHeights[coords.GetRow()] <= 0 ) return; - + int row = coords.GetRow(); int col = coords.GetCol(); @@ -2589,7 +2597,7 @@ void wxGrid::DrawCellValue( wxDC& dc, const wxGridCellCoords& coords ) { if ( m_colWidths[coords.GetCol()] <=0 || m_rowHeights[coords.GetRow()] <= 0 ) return; - + int row = coords.GetRow(); 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.SetWidth( m_colWidths[col] - 4 ); rect.SetHeight( m_rowHeights[row] - 4 ); - + 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 ) { - if ( !m_gridLinesEnabled || - !m_numRows || + if ( !m_gridLinesEnabled || + !m_numRows || !m_numCols ) return; int cw, ch; @@ -2646,7 +2654,7 @@ void wxGrid::DrawAllGridLines( wxDC& dc ) // horizontal grid lines // - int i; + int i; for ( i = 0; i <= m_numRows; i++ ) { if ( m_rowBottoms[i] > bottom ) @@ -2679,21 +2687,21 @@ void wxGrid::DrawAllGridLines( wxDC& dc ) void wxGrid::DrawRowLabels( wxDC& dc ) { if ( !m_numRows || !m_numCols ) return; - + size_t i; size_t numLabels = m_rowLabelsExposed.GetCount(); - + for ( i = 0; i < numLabels; i++ ) { DrawRowLabel( dc, m_rowLabelsExposed[i] ); - } + } } void wxGrid::DrawRowLabel( wxDC& dc, int row ) { if ( m_rowHeights[row] <= 0 ) return; - + // draw the label's horizontal border (the vertical border is // 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, m_rowLabelWidth, m_rowBottoms[row]+2 ); - + dc.SetBackgroundMode( wxTRANSPARENT ); dc.SetTextForeground( GetLabelTextColour() ); dc.SetFont( GetLabelFont() ); int hAlign, vAlign; GetRowLabelAlignment( &hAlign, &vAlign ); - + wxRect rect; rect.SetX( 2 ); rect.SetY( m_rowBottoms[row] - m_rowHeights[row] + 2 ); rect.SetWidth( m_rowLabelWidth - 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 ) { if ( !m_numRows || !m_numCols ) return; - + size_t i; size_t numLabels = m_colLabelsExposed.GetCount(); - + for ( i = 0; i < numLabels; i++ ) { DrawColLabel( dc, m_colLabelsExposed[i] ); - } + } } void wxGrid::DrawColLabel( wxDC& dc, int col ) { if ( m_colWidths[col] <= 0 ) return; - + // draw the label's vertical border (the horizontal border is // provided by the cell area window margin) // @@ -2760,13 +2768,13 @@ void wxGrid::DrawColLabel( wxDC& dc, int col ) int hAlign, vAlign; GetColLabelAlignment( &hAlign, &vAlign ); - + wxRect rect; rect.SetX( m_colRights[col] - m_colWidths[col] + 2 ); rect.SetY( 2 ); rect.SetWidth( m_colWidths[col] - 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 ) { m_cellEditCtrlEnabled = enable; - + if ( m_cellEditCtrlEnabled ) { SetEditControlValue(); @@ -2957,14 +2965,14 @@ void wxGrid::ShowCellEditControl() int left, top, right, bottom; CalcScrolledPosition( rect.GetLeft(), rect.GetTop(), &left, &top ); CalcScrolledPosition( rect.GetRight(), rect.GetBottom(), &right, &bottom ); - + int cw, ch; m_gridWin->GetClientSize( &cw, &ch ); // Make the edit control large enough to allow for internal margins // 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.SetTop( wxMax(0, top-4) ); rect.SetRight( rect.GetRight() + 8 ); @@ -2973,9 +2981,9 @@ void wxGrid::ShowCellEditControl() rect.SetLeft( wxMax(0, left-2) ); rect.SetTop( wxMax(0, top-2) ); rect.SetRight( rect.GetRight() + 4 ); - rect.SetBottom( rect.GetBottom() + 4 ); + rect.SetBottom( rect.GetBottom() + 4 ); #endif - + m_cellEditCtrl->SetSize( rect ); m_cellEditCtrl->Show( TRUE ); @@ -3107,8 +3115,8 @@ void wxGrid::SaveEditControlValue() // -// ------ Grid location functions -// Note that all of these functions work with the logical coordinates of +// ------ Grid location functions +// Note that all of these functions work with the logical coordinates of // grid cells and labels so you will need to convert from device // 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 // wxRect r( CellToRect( row, col ) ); - + // convert to device coords // int left, top, right, bottom; CalcScrolledPosition( r.GetLeft(), r.GetTop(), &left, &top ); CalcScrolledPosition( r.GetRight(), r.GetBottom(), &right, &bottom ); - + // check against the client area of the grid window // int cw, ch; m_gridWin->GetClientSize( &cw, &ch ); - + if ( wholeCellVisible ) { // 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 ) { int i; - int xpos = -1, ypos = -1; + int xpos = -1, ypos = -1; if ( row >= 0 && row < m_numRows && col >= 0 && col < m_numCols ) @@ -3255,16 +3263,16 @@ void wxGrid::MakeCellVisible( int row, int col ) // get the cell rectangle in logical coords // wxRect r( CellToRect( row, col ) ); - + // convert to device coords // int left, top, right, bottom; CalcScrolledPosition( r.GetLeft(), r.GetTop(), &left, &top ); CalcScrolledPosition( r.GetRight(), r.GetBottom(), &right, &bottom ); - + int cw, ch; m_gridWin->GetClientSize( &cw, &ch ); - + if ( top < 0 ) { ypos = r.GetTop(); @@ -3321,7 +3329,7 @@ bool wxGrid::MoveCursorUp() { MakeCellVisible( m_currentCellCoords.GetRow() - 1, m_currentCellCoords.GetCol() ); - + SetCurrentCell( m_currentCellCoords.GetRow() - 1, m_currentCellCoords.GetCol() ); @@ -3341,7 +3349,7 @@ bool wxGrid::MoveCursorDown() { MakeCellVisible( m_currentCellCoords.GetRow() + 1, m_currentCellCoords.GetCol() ); - + SetCurrentCell( m_currentCellCoords.GetRow() + 1, m_currentCellCoords.GetCol() ); @@ -3359,7 +3367,7 @@ bool wxGrid::MoveCursorLeft() { MakeCellVisible( m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol() - 1 ); - + SetCurrentCell( m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol() - 1 ); @@ -3377,7 +3385,7 @@ bool wxGrid::MoveCursorRight() { MakeCellVisible( m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol() + 1 ); - + SetCurrentCell( m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol() + 1 ); @@ -3391,27 +3399,27 @@ bool wxGrid::MoveCursorRight() bool wxGrid::MovePageUp() { if ( m_currentCellCoords == wxGridNoCellCoords ) return FALSE; - + int row = m_currentCellCoords.GetRow(); if ( row > 0 ) { int cw, ch; m_gridWin->GetClientSize( &cw, &ch ); - + int y = m_rowBottoms[ row ] - m_rowHeights[ row ]; int newRow = YToRow( y - ch + 1 ); if ( newRow == -1 ) { newRow = 0; } - else if ( newRow == row ) + else if ( newRow == row ) { newRow = row - 1; } MakeCellVisible( newRow, m_currentCellCoords.GetCol() ); SetCurrentCell( newRow, m_currentCellCoords.GetCol() ); - + return TRUE; } @@ -3421,27 +3429,27 @@ bool wxGrid::MovePageUp() bool wxGrid::MovePageDown() { if ( m_currentCellCoords == wxGridNoCellCoords ) return FALSE; - + int row = m_currentCellCoords.GetRow(); if ( row < m_numRows ) { int cw, ch; m_gridWin->GetClientSize( &cw, &ch ); - + int y = m_rowBottoms[ row ] - m_rowHeights[ row ]; int newRow = YToRow( y + ch ); if ( newRow == -1 ) { newRow = m_numRows - 1; } - else if ( newRow == row ) + else if ( newRow == row ) { newRow = row + 1; } MakeCellVisible( newRow, m_currentCellCoords.GetCol() ); SetCurrentCell( newRow, m_currentCellCoords.GetCol() ); - + return TRUE; } @@ -3781,7 +3789,7 @@ void wxGrid::SetRowLabelAlignment( int horiz, int vert ) { m_rowLabelWin->Refresh(); m_colLabelWin->Refresh(); - } + } } void wxGrid::SetColLabelAlignment( int horiz, int vert ) @@ -3800,7 +3808,7 @@ void wxGrid::SetColLabelAlignment( int horiz, int vert ) { m_rowLabelWin->Refresh(); m_colLabelWin->Refresh(); - } + } } void wxGrid::SetRowLabelValue( int row, const wxString& s ) @@ -3836,7 +3844,7 @@ void wxGrid::SetGridLineColour( const wxColour& colour ) if ( m_gridLineColour != colour ) { m_gridLineColour = colour; - + wxClientDC dc( m_gridWin ); PrepareDC( dc ); DrawAllGridLines( dc ); @@ -3970,19 +3978,19 @@ void wxGrid::SetDefaultRowSize( int height, bool resizeExistingRows ) void wxGrid::SetRowSize( int row, int height ) { int i; - + if ( row >= 0 && row < m_numRows ) { int h = wxMax( 0, height ); int diff = h - m_rowHeights[row]; - + m_rowHeights[row] = h; for ( i = row; i < m_numRows; i++ ) { m_rowBottoms[i] += diff; } CalcDimensions(); - + // Note: we are ending the event *after* doing // default processing in this case // @@ -4016,7 +4024,7 @@ void wxGrid::SetDefaultColSize( int width, bool resizeExistingCols ) void wxGrid::SetColSize( int col, int width ) { int i; - + if ( col >= 0 && col < m_numCols ) { int w = wxMax( 0, width ); @@ -4028,7 +4036,7 @@ void wxGrid::SetColSize( int col, int width ) m_colRights[i] += diff; } CalcDimensions(); - + // Note: we are ending the event *after* doing // default processing in this case // @@ -4106,9 +4114,9 @@ void wxGrid::SetCellValue( int row, int col, const wxString& s ) PrepareDC( dc ); DrawCell( dc, wxGridCellCoords(row, col) ); } - + #if 0 // TODO: edit in place - + if ( m_currentCellCoords.GetRow() == row && 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 ) { wxRect r; - + if ( IsSelection() && addToSelected ) { if ( m_selectedTopLeft.GetRow() > row ) @@ -4151,7 +4159,7 @@ void wxGrid::SelectRow( int row, bool addToSelected ) r = SelectionToDeviceRect(); ClearSelection(); if ( r != wxGridNoCellRect ) m_gridWin->Refresh( TRUE, &r ); - + m_selectedTopLeft.Set( row, 0 ); m_selectedBottomRight.Set( row, m_numCols-1 ); r = SelectionToDeviceRect(); @@ -4171,7 +4179,7 @@ void wxGrid::SelectRow( int row, bool addToSelected ) void wxGrid::SelectCol( int col, bool addToSelected ) { wxRect r; - + if ( IsSelection() && addToSelected ) { if ( m_selectedTopLeft.GetCol() > col ) @@ -4195,7 +4203,7 @@ void wxGrid::SelectCol( int col, bool addToSelected ) r = SelectionToDeviceRect(); ClearSelection(); if ( r != wxGridNoCellRect ) m_gridWin->Refresh( TRUE, &r ); - + m_selectedTopLeft.Set( 0, col ); m_selectedBottomRight.Set( m_numRows-1, col ); r = SelectionToDeviceRect(); @@ -4232,7 +4240,7 @@ void wxGrid::SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol ) m_selectedTopLeft.Set( topRow, leftCol ); m_selectedBottomRight.Set( bottomRow, rightCol ); - + wxRect r; r = SelectionToDeviceRect(); m_gridWin->Refresh( TRUE, &r ); @@ -4303,10 +4311,10 @@ wxRect wxGrid::SelectionToDeviceRect() int left, top, right, bottom; CalcScrolledPosition( rect.GetLeft(), rect.GetTop(), &left, &top ); CalcScrolledPosition( rect.GetRight(), rect.GetBottom(), &right, &bottom ); - + int cw, ch; m_gridWin->GetClientSize( &cw, &ch ); - + rect.SetLeft( wxMax(0, left) ); rect.SetTop( wxMax(0, top) ); rect.SetRight( wxMin(cw, right) ); -- 2.47.2