X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/670d01778a69731665cbb7c77726f067a1c8ce17..09e744f55267ee17225f1e25f4fb26f4d8927781:/include/wx/generic/grid.h diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index f2404fcd9d..e02f4848e1 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -388,8 +388,7 @@ public: { Init(attrDefault); - // MB: args used to be 0,0 here but wxALIGN_LEFT is 0 - SetAlignment(-1, -1); + SetAlignment(wxALIGN_INVALID, wxALIGN_INVALID); } // VZ: considering the number of members wxGridCellAttr has now, this ctor @@ -436,7 +435,10 @@ public: bool HasTextColour() const { return m_colText.Ok(); } bool HasBackgroundColour() const { return m_colBack.Ok(); } bool HasFont() const { return m_font.Ok(); } - bool HasAlignment() const { return (m_hAlign != -1 || m_vAlign != -1); } + bool HasAlignment() const + { + return m_hAlign != wxALIGN_INVALID || m_vAlign != wxALIGN_INVALID; + } bool HasRenderer() const { return m_renderer != NULL; } bool HasEditor() const { return m_editor != NULL; } bool HasReadWriteMode() const { return m_isReadOnly != Unset; } @@ -447,6 +449,15 @@ public: const wxColour& GetBackgroundColour() const; const wxFont& GetFont() const; void GetAlignment(int *hAlign, int *vAlign) const; + + // unlike GetAlignment() which always overwrites its output arguments with + // the alignment values to use, falling back on default alignment if this + // attribute doesn't have any, this function will preserve the values of + // parameters on entry if the corresponding alignment is not set in this + // attribute meaning that they can be initialized to default alignment (and + // also that they must be initialized, unlike with GetAlignment()) + void GetNonDefaultAlignment(int *hAlign, int *vAlign) const; + void GetSize(int *num_rows, int *num_cols) const; bool GetOverflow() const { return m_overflow != SingleCell; } @@ -1257,6 +1268,12 @@ public: void SetRowAttr(int row, wxGridCellAttr *attr); void SetColAttr(int col, wxGridCellAttr *attr); + // the grid can cache attributes for the recently used cells (currently it + // only caches one attribute for the most recently used one) and might + // notice that its value in the attribute provider has changed -- if this + // happens, call this function to force it + void RefreshAttr(int row, int col); + // returns the attribute we may modify in place: a new one if this cell // doesn't have any yet or the existing one if it does // @@ -1290,7 +1307,24 @@ public: void GetCellAlignment( int row, int col, int *horiz, int *vert ) const; bool GetDefaultCellOverflow() const; bool GetCellOverflow( int row, int col ) const; - void GetCellSize( int row, int col, int *num_rows, int *num_cols ) const; + + // this function returns 1 in num_rows and num_cols for normal cells, + // positive numbers for a cell spanning multiple columns/rows (as set with + // SetCellSize()) and _negative_ numbers corresponding to the offset of the + // top left cell of the span from this one for the other cells covered by + // this cell + // + // the return value is CellSpan_None, CellSpan_Main or CellSpan_Inside for + // each of these cases respectively + enum CellSpan + { + CellSpan_Inside = -1, + CellSpan_None = 0, + CellSpan_Main + }; + + CellSpan GetCellSize( int row, int col, int *num_rows, int *num_cols ) const; + wxSize GetCellSize(const wxGridCellCoords& coords) { wxSize s; @@ -1567,10 +1601,10 @@ public: } // Allow adjustment of scroll increment. The default is (15, 15). - void SetScrollLineX(int x) { m_scrollLineX = x; } - void SetScrollLineY(int y) { m_scrollLineY = y; } - int GetScrollLineX() const { return m_scrollLineX; } - int GetScrollLineY() const { return m_scrollLineY; } + void SetScrollLineX(int x) { m_xScrollPixelsPerLine = x; } + void SetScrollLineY(int y) { m_yScrollPixelsPerLine = y; } + int GetScrollLineX() const { return m_xScrollPixelsPerLine; } + int GetScrollLineY() const { return m_yScrollPixelsPerLine; } // ------- drag and drop #if wxUSE_DRAG_AND_DROP @@ -1675,9 +1709,9 @@ public: void SetLabelAlignment( int orientation, int align ) { if ( orientation == wxHORIZONTAL ) - SetColLabelAlignment( align, -1 ); + SetColLabelAlignment( align, wxALIGN_INVALID ); else - SetRowLabelAlignment( align, -1 ); + SetRowLabelAlignment( align, wxALIGN_INVALID ); } int GetLabelAlignment( int orientation, int WXUNUSED(align) ) const @@ -2018,9 +2052,6 @@ protected: bool m_editable; // applies to whole grid bool m_cellEditCtrlEnabled; // is in-place edit currently shown? - int m_scrollLineX; // X scroll increment - int m_scrollLineY; // Y scroll increment - void Init(); // common part of all ctors void Create(); void CreateColumnWindow(); @@ -2591,9 +2622,9 @@ extern const int wxEVT_GRID_CREATE_CELL; extern const int wxEVT_GRID_CHANGE_LABELS; extern const int wxEVT_GRID_CHANGE_SEL_LABEL; -#define EVT_GRID_CREATE_CELL(fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_GRID_CREATE_CELL, wxID_ANY, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxGridEventFunction, &fn ), NULL ), -#define EVT_GRID_CHANGE_LABELS(fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_GRID_CHANGE_LABELS, wxID_ANY, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxGridEventFunction, &fn ), NULL ), -#define EVT_GRID_CHANGE_SEL_LABEL(fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_GRID_CHANGE_SEL_LABEL, wxID_ANY, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxGridEventFunction, &fn ), NULL ), +#define EVT_GRID_CREATE_CELL(fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_GRID_CREATE_CELL, wxID_ANY, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxGridEventFunction, &fn ), NULL ), +#define EVT_GRID_CHANGE_LABELS(fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_GRID_CHANGE_LABELS, wxID_ANY, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxGridEventFunction, &fn ), NULL ), +#define EVT_GRID_CHANGE_SEL_LABEL(fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_GRID_CHANGE_SEL_LABEL, wxID_ANY, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxGridEventFunction, &fn ), NULL ), #endif