X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/63e2147c8b027645682e0e4cd013a3f30bbd3483..2cc833a1bd5219d7cf3d105ba0f77f93a517a278:/include/wx/generic/grid.h diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index 612eefeaaa..a262d1b953 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -2,22 +2,16 @@ // Name: wx/generic/grid.h // Purpose: wxGrid and related classes // Author: Michael Bedward (based on code by Julian Smart, Robin Dunn) -// Modified by: +// Modified by: Santiago Palacios // Created: 1/08/1999 // RCS-ID: $Id$ // Copyright: (c) Michael Bedward // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#include "wx/defs.h" - #ifndef __WXGRID_H__ #define __WXGRID_H__ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "grid.h" -#endif - #include "wx/hashmap.h" #include "wx/panel.h" #include "wx/scrolwin.h" @@ -107,7 +101,7 @@ public: // calling DecRef() once will delete it. Calling IncRef() allows to lock // it until the matching DecRef() is called void IncRef() { m_nRef++; } - void DecRef() { if ( !--m_nRef ) delete this; } + void DecRef() { if ( --m_nRef == 0 ) delete this; } // interpret renderer parameters: arbitrary string whose interpretatin is // left to the derived classes @@ -184,13 +178,13 @@ public: protected: // set the text colours before drawing - void SetTextColoursAndFont(wxGrid& grid, - wxGridCellAttr& attr, + void SetTextColoursAndFont(const wxGrid& grid, + const wxGridCellAttr& attr, wxDC& dc, bool isSelected); // calc the string extent for given string/font - wxSize DoGetBestSize(wxGridCellAttr& attr, + wxSize DoGetBestSize(const wxGridCellAttr& attr, wxDC& dc, const wxString& text); }; @@ -216,7 +210,7 @@ public: { return new wxGridCellNumberRenderer; } protected: - wxString GetString(wxGrid& grid, int row, int col); + wxString GetString(const wxGrid& grid, int row, int col); }; class WXDLLIMPEXP_ADV wxGridCellFloatRenderer : public wxGridCellStringRenderer @@ -249,7 +243,7 @@ public: virtual wxGridCellRenderer *Clone() const; protected: - wxString GetString(wxGrid& grid, int row, int col); + wxString GetString(const wxGrid& grid, int row, int col); private: // formatting parameters @@ -662,7 +656,7 @@ public: // calling DecRef() once will delete it. Calling IncRef() allows to lock // it until the matching DecRef() is called void IncRef() { m_nRef++; } - void DecRef() { if ( !--m_nRef ) delete this; } + void DecRef() { if ( --m_nRef == 0 ) delete this; } // setters void SetTextColour(const wxColour& colText) { m_colText = colText; } @@ -696,6 +690,7 @@ public: bool HasEditor() const { return m_editor != NULL; } bool HasReadWriteMode() const { return m_isReadOnly != Unset; } bool HasOverflowMode() const { return m_overflow != UnsetOverflow; } + bool HasSize() const { return m_sizeRows != 1 || m_sizeCols != 1; } const wxColour& GetTextColour() const; const wxColour& GetBackgroundColour() const; @@ -713,6 +708,14 @@ public: void SetDefAttr(wxGridCellAttr* defAttr) { m_defGridAttr = defAttr; } +protected: + // the dtor is private because only DecRef() can delete us + virtual ~wxGridCellAttr() + { + wxSafeDecRef(m_renderer); + wxSafeDecRef(m_editor); + } + private: enum wxAttrReadMode { @@ -731,12 +734,6 @@ private: // the common part of all ctors void Init(wxGridCellAttr *attrDefault = NULL); - // the dtor is private because only DecRef() can delete us - ~wxGridCellAttr() - { - wxSafeDecRef(m_renderer); - wxSafeDecRef(m_editor); - } // the ref count - when it goes to 0, we die size_t m_nRef; @@ -1126,6 +1123,7 @@ public: void DoEndDragResizeRow(); void DoEndDragResizeCol(); + void DoEndDragMoveCol(); wxGridTableBase * GetTable() const { return m_table; } bool SetTable( wxGridTableBase *table, bool takeOwnership = false, @@ -1176,7 +1174,7 @@ public: // void StringToLines( const wxString& value, wxArrayString& lines ); - void GetTextBoxSize( wxDC& dc, + void GetTextBoxSize( const wxDC& dc, const wxArrayString& lines, long *width, long *height ); @@ -1229,7 +1227,7 @@ public: // void XYToCell( int x, int y, wxGridCellCoords& ); int YToRow( int y ); - int XToCol( int x ); + int XToCol( int x, bool clipToMinMax = false ); int YToEdgeOfRow( int y ); int XToEdgeOfCol( int x ); @@ -1309,6 +1307,9 @@ public: void EnableDragColSize( bool enable = true ); void DisableDragColSize() { EnableDragColSize( false ); } bool CanDragColSize() { return m_canDragColSize; } + void EnableDragColMove( bool enable = true ); + void DisableDragColMove() { EnableDragColMove( false ); } + bool CanDragColMove() { return m_canDragColMove; } void EnableDragGridSize(bool enable = true); void DisableDragGridSize() { EnableDragGridSize(false); } bool CanDragGridSize() { return m_canDragGridSize; } @@ -1364,6 +1365,33 @@ public: void SetColSize( int col, int width ); + //Column positions + int GetColAt( int colPos ) const + { + if ( m_colAt.IsEmpty() ) + return colPos; + else + return m_colAt[colPos]; + } + + void SetColPos( int colID, int newPos ); + + int GetColPos( int colID ) const + { + if ( m_colAt.IsEmpty() ) + return colID; + else + { + for ( int i = 0; i < m_numCols; i++ ) + { + if ( m_colAt[i] == colID ) + return i; + } + } + + return -1; + } + // automatically size the column or row to fit to its contents, if // setAsMin is true, this optimal width will also be set as minimal width // for this column @@ -1872,7 +1900,8 @@ protected: WXGRID_CURSOR_RESIZE_ROW, WXGRID_CURSOR_RESIZE_COL, WXGRID_CURSOR_SELECT_ROW, - WXGRID_CURSOR_SELECT_COL + WXGRID_CURSOR_SELECT_COL, + WXGRID_CURSOR_MOVE_COL }; // this method not only sets m_cursorMode but also sets the correct cursor @@ -1888,8 +1917,13 @@ protected: wxWindow *m_winCapture; // the window which captured the mouse CursorMode m_cursorMode; + //Column positions + wxArrayInt m_colAt; + int m_moveToCol; + bool m_canDragRowSize; bool m_canDragColSize; + bool m_canDragColMove; bool m_canDragGridSize; bool m_canDragCell; int m_dragLastPos; @@ -1983,6 +2017,14 @@ public: bool MetaDown() { return m_meta; } bool ShiftDown() { return m_shift; } bool AltDown() { return m_alt; } + bool CmdDown() + { +#if defined(__WXMAC__) || defined(__WXCOCOA__) + return MetaDown(); +#else + return ControlDown(); +#endif + } protected: int m_row; @@ -2017,6 +2059,14 @@ public: bool MetaDown() { return m_meta; } bool ShiftDown() { return m_shift; } bool AltDown() { return m_alt; } + bool CmdDown() + { +#if defined(__WXMAC__) || defined(__WXCOCOA__) + return MetaDown(); +#else + return ControlDown(); +#endif + } protected: int m_rowOrCol; @@ -2064,6 +2114,14 @@ public: bool MetaDown() { return m_meta; } bool ShiftDown() { return m_shift; } bool AltDown() { return m_alt; } + bool CmdDown() + { +#if defined(__WXMAC__) || defined(__WXCOCOA__) + return MetaDown(); +#else + return ControlDown(); +#endif + } protected: wxGridCellCoords m_topLeft;