X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3379ed3789e405f874d9db757d95346f1d378795..bca7bfc878242483c1130c460c488c27002607a9:/include/wx/generic/grid.h diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index b0a62e87d7..8825ffe555 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -18,7 +18,7 @@ #ifndef __WXGRID_H__ #define __WXGRID_H__ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "grid.h" #endif @@ -31,6 +31,7 @@ #include "wx/combobox.h" #include "wx/dynarray.h" #include "wx/timer.h" +#include "wx/clntdata.h" // ---------------------------------------------------------------------------- // constants @@ -98,7 +99,7 @@ class WXDLLEXPORT wxSpinCtrl; // class is not documented and is not public at all // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxGridCellWorker +class WXDLLEXPORT wxGridCellWorker : public wxClientDataContainer { public: wxGridCellWorker() { m_nRef = 1; } @@ -476,7 +477,7 @@ public: virtual void StartingKey(wxKeyEvent& event); virtual wxGridCellEditor *Clone() const - { return new wxGridCellFloatEditor; } + { return new wxGridCellFloatEditor(m_width, m_precision); } // parameters string format is "width,precision" virtual void SetParameters(const wxString& params); @@ -569,7 +570,7 @@ private: // class may be returned by wxGridTable::GetAttr(). // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxGridCellAttr +class WXDLLEXPORT wxGridCellAttr : public wxClientDataContainer { public: enum wxAttrKind @@ -583,9 +584,10 @@ public: }; // ctors - wxGridCellAttr() + wxGridCellAttr(wxGridCellAttr *attrDefault = NULL) { - Init(); + Init(attrDefault); + // MB: args used to be 0,0 here but wxALIGN_LEFT is 0 SetAlignment(-1, -1); } @@ -622,6 +624,8 @@ public: m_hAlign = hAlign; m_vAlign = vAlign; } + void SetSize(int num_rows, int num_cols); + void SetOverflow( bool allow ) { m_overflow = allow; } void SetReadOnly(bool isReadOnly = TRUE) { m_isReadOnly = isReadOnly ? ReadOnly : ReadWrite; } @@ -646,6 +650,8 @@ public: const wxColour& GetBackgroundColour() const; const wxFont& GetFont() const; void GetAlignment(int *hAlign, int *vAlign) const; + void GetSize(int *num_rows, int *num_cols) const; + bool GetOverflow() const { return m_overflow; } wxGridCellRenderer *GetRenderer(wxGrid* grid, int row, int col) const; wxGridCellEditor *GetEditor(wxGrid* grid, int row, int col) const; @@ -664,17 +670,7 @@ private: }; // the common part of all ctors - void Init() - { - m_nRef = 1; - - m_isReadOnly = Unset; - - m_renderer = NULL; - m_editor = NULL; - - m_attrkind = wxGridCellAttr::Cell; - } + void Init(wxGridCellAttr *attrDefault = NULL); // the dtor is private because only DecRef() can delete us ~wxGridCellAttr() @@ -691,6 +687,9 @@ private: wxFont m_font; int m_hAlign, m_vAlign; + int m_sizeRows, + m_sizeCols; + bool m_overflow; wxGridCellRenderer* m_renderer; wxGridCellEditor* m_editor; @@ -720,7 +719,7 @@ private: // the default implementation is reasonably efficient for the generic case, // but you might still wish to implement your own for some specific situations // if you have performance problems with the stock one -class WXDLLEXPORT wxGridCellAttrProvider +class WXDLLEXPORT wxGridCellAttrProvider : public wxClientDataContainer { public: wxGridCellAttrProvider(); @@ -754,7 +753,7 @@ private: ////////////////////////////////////////////////////////////////////// -class WXDLLEXPORT wxGridTableBase : public wxObject +class WXDLLEXPORT wxGridTableBase : public wxObject, public wxClientDataContainer { public: wxGridTableBase(); @@ -899,7 +898,7 @@ class WXDLLEXPORT wxGridStringTable : public wxGridTableBase public: wxGridStringTable(); wxGridStringTable( int numRows, int numCols ); - ~wxGridStringTable(); + virtual ~wxGridStringTable(); // these are pure virtual in wxGridTableBase // @@ -1019,7 +1018,7 @@ public: long style = wxWANTS_CHARS, const wxString& name = wxPanelNameStr ); - ~wxGrid(); + virtual ~wxGrid(); enum wxGridSelectionModes {wxGridSelectCells, wxGridSelectRows, @@ -1030,6 +1029,7 @@ public: wxGrid::wxGridSelectCells ); void SetSelectionMode(wxGrid::wxGridSelectionModes selmode); + wxGrid::wxGridSelectionModes GetSelectionMode() const; // ------ grid dimensions // @@ -1118,6 +1118,8 @@ public: int GetBatchCount() { return m_batchCount; } + virtual void Refresh(bool eraseb=true, wxRect* rect= NULL); + // Use this, rather than wxWindow::Refresh(), to force an // immediate repainting of the grid. Has no effect if you are // already inside a BeginBatch / EndBatch block. @@ -1130,7 +1132,7 @@ public: // ------ edit control functions // - bool IsEditable() { return m_editable; } + bool IsEditable() const { return m_editable; } void EnableEditing( bool edit ); void EnableCellEditControl( bool enable = TRUE ); @@ -1235,7 +1237,8 @@ public: void DisableDragGridSize() { EnableDragGridSize(FALSE); } bool CanDragGridSize() { return m_canDragGridSize; } - // this sets the specified attribute for all cells in this row/col + // this sets the specified attribute for this cell or in this row/col + void SetAttr(int row, int col, wxGridCellAttr *attr); void SetRowAttr(int row, wxGridCellAttr *attr); void SetColAttr(int col, wxGridCellAttr *attr); @@ -1264,6 +1267,9 @@ public: wxFont GetCellFont( int row, int col ); void GetDefaultCellAlignment( int *horiz, int *vert ); void GetCellAlignment( int row, int col, int *horiz, int *vert ); + bool GetDefaultCellOverflow(); + bool GetCellOverflow( int row, int col ); + void GetCellSize( int row, int col, int *num_rows, int *num_cols ); void SetDefaultRowSize( int height, bool resizeExistingRows = FALSE ); void SetRowSize( int row, int height ); @@ -1305,6 +1311,9 @@ public: void SetCellFont( int row, int col, const wxFont& ); void SetDefaultCellAlignment( int horiz, int vert ); void SetCellAlignment( int row, int col, int horiz, int vert ); + void SetDefaultCellOverflow( bool allow ); + void SetCellOverflow( int row, int col, bool allow ); + void SetCellSize( int row, int col, int num_rows, int num_cols ); // takes ownership of the pointer void SetDefaultRenderer(wxGridCellRenderer *renderer); @@ -1347,7 +1356,7 @@ public: // make the cell editable/readonly void SetReadOnly(int row, int col, bool isReadOnly = TRUE); - // ------ selections of blocks of cells + // ------ select blocks of cells // void SelectRow( int row, bool addToSelected = FALSE ); void SelectCol( int col, bool addToSelected = FALSE ); @@ -1366,7 +1375,7 @@ public: bool IsSelection(); - // ------ deselection + // ------ deselect blocks or cells // void DeselectRow( int row ); void DeselectCol( int col ); @@ -1374,11 +1383,16 @@ public: void ClearSelection(); - bool IsInSelection( int row, int col ); + bool IsInSelection( int row, int col ) const; - bool IsInSelection( const wxGridCellCoords& coords ) + bool IsInSelection( const wxGridCellCoords& coords ) const { return IsInSelection( coords.GetRow(), coords.GetCol() ); } + wxGridCellCoordsArray GetSelectedCells() const; + wxGridCellCoordsArray GetSelectionBlockTopLeft() const; + wxGridCellCoordsArray GetSelectionBlockBottomRight() const; + wxArrayInt GetSelectedRows() const; + wxArrayInt GetSelectedCols() const; // This function returns the rectangle that encloses the block of cells // limited by TopLeft and BottomRight cell in device coords and clipped @@ -1414,6 +1428,8 @@ public: { m_extraWidth = extraWidth; m_extraHeight = extraHeight; + + CalcDimensions(); } // Accessors for component windows @@ -1775,9 +1791,9 @@ protected: bool Redimension( wxGridTableMessage& ); - bool SendEvent( const wxEventType, int row, int col, wxMouseEvent& ); - bool SendEvent( const wxEventType, int row, int col ); - bool SendEvent( const wxEventType type) + int SendEvent( const wxEventType, int row, int col, wxMouseEvent& ); + int SendEvent( const wxEventType, int row, int col ); + int SendEvent( const wxEventType type) { return SendEvent(type, m_currentCellCoords.GetRow(),