]> git.saurik.com Git - wxWidgets.git/blob - include/wx/generic/gridsel.h
move the grid-specific workaround for scrollbar hysteresis to wxScrollHelper itself...
[wxWidgets.git] / include / wx / generic / gridsel.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/generic/gridsel.h
3 // Purpose: wxGridSelection
4 // Author: Stefan Neis
5 // Modified by:
6 // Created: 20/02/2000
7 // RCS-ID: $$
8 // Copyright: (c) Stefan Neis
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_GENERIC_GRIDSEL_H_
13 #define _WX_GENERIC_GRIDSEL_H_
14
15 #include "wx/defs.h"
16
17 #if wxUSE_GRID
18
19 #include "wx/grid.h"
20
21 class WXDLLIMPEXP_ADV wxGridSelection
22 {
23 public:
24 wxGridSelection( wxGrid * grid, wxGrid::wxGridSelectionModes sel =
25 wxGrid::wxGridSelectCells );
26 bool IsSelection();
27 bool IsInSelection ( int row, int col );
28 void SetSelectionMode(wxGrid::wxGridSelectionModes selmode);
29 wxGrid::wxGridSelectionModes GetSelectionMode() { return m_selectionMode; }
30 void SelectRow( int row,
31 bool ControlDown = false, bool ShiftDown = false,
32 bool AltDown = false, bool MetaDown = false );
33 void SelectCol( int col,
34 bool ControlDown = false, bool ShiftDown = false,
35 bool AltDown = false, bool MetaDown = false );
36 void SelectBlock( int topRow, int leftCol,
37 int bottomRow, int rightCol,
38 bool ControlDown = false, bool ShiftDown = false,
39 bool AltDown = false, bool MetaDown = false,
40 bool sendEvent = true );
41 void SelectCell( int row, int col,
42 bool ControlDown = false, bool ShiftDown = false,
43 bool AltDown = false, bool MetaDown = false,
44 bool sendEvent = true );
45 void ToggleCellSelection( int row, int col,
46 bool ControlDown = false,
47 bool ShiftDown = false,
48 bool AltDown = false, bool MetaDown = false );
49 void ClearSelection();
50
51 void UpdateRows( size_t pos, int numRows );
52 void UpdateCols( size_t pos, int numCols );
53
54 private:
55 int BlockContain( int topRow1, int leftCol1,
56 int bottomRow1, int rightCol1,
57 int topRow2, int leftCol2,
58 int bottomRow2, int rightCol2 );
59 // returns 1, if Block1 contains Block2,
60 // -1, if Block2 contains Block1,
61 // 0, otherwise
62
63 int BlockContainsCell( int topRow, int leftCol,
64 int bottomRow, int rightCol,
65 int row, int col )
66 // returns 1, if Block contains Cell,
67 // 0, otherwise
68 {
69 return ( topRow <= row && row <= bottomRow &&
70 leftCol <= col && col <= rightCol );
71 }
72
73 wxGridCellCoordsArray m_cellSelection;
74 wxGridCellCoordsArray m_blockSelectionTopLeft;
75 wxGridCellCoordsArray m_blockSelectionBottomRight;
76 wxArrayInt m_rowSelection;
77 wxArrayInt m_colSelection;
78
79 wxGrid *m_grid;
80 wxGrid::wxGridSelectionModes m_selectionMode;
81
82 friend class WXDLLIMPEXP_FWD_ADV wxGrid;
83
84 DECLARE_NO_COPY_CLASS(wxGridSelection)
85 };
86
87 #endif // wxUSE_GRID
88 #endif // _WX_GENERIC_GRIDSEL_H_