// Name: gridg.h
// Purpose: wxGenericGrid
// Author: Julian Smart
-// Modified by: Michael Bedward 20 April 1999
-// Added edit in place facility
+// Modified by: Michael Bedward
+// Added edit in place facility, 20 April 1999
+// Added cursor key control, 29 Jun 1999
// Created: 01/02/97
// RCS-ID: $Id$
// Copyright: (c)
#ifndef __GRIDH_G__
#define __GRIDH_G__
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "gridg.h"
#endif
#include "wx/defs.h"
+
+#if wxUSE_GRID
+
#include "wx/panel.h"
#include "wx/string.h"
#include "wx/scrolbar.h"
#define wxGRID_DEFAULT_VERTICAL_LABEL_WIDTH 40
#define wxGRID_DEFAULT_HORIZONAL_LABEL_HEIGHT 20
-#ifndef wxLEFT
- #define wxLEFT 0x0400
-#endif
-
-#ifndef wxRIGHT
- #define wxRIGHT 0x0800
-#endif
-
#define WXGENERIC_GRID_VERSION 0.5
class WXDLLEXPORT wxGridEvent;
void SetCellTextFont(const wxFont& fnt, int row, int col);
wxBitmap *GetCellBitmap(int row, int col) const;
void SetCellBitmap(wxBitmap *bitmap, int row, int col);
+ void *SetCellData(void *data, int row, int col);
+ void *GetCellData(int row, int col);
// Size accessors
void SetColumnWidth(int col, int width);
int GetColumnWidth(int col) const;
void SetRowHeight(int row, int height);
int GetRowHeight(int row) const;
+ int GetViewHeight() const { return m_viewHeight; }
+ int GetViewWidth() const { return m_viewWidth; }
// Label accessors
void SetLabelSize(int orientation, int sz);
void UpdateDimensions();
void SetCurrentRect (int Row, int Column, int canvasW = -1, int canvasH = -1);
- void HighlightCell (wxDC *dc);
+ void HighlightCell(wxDC *dc, bool doHighlight);
void DrawCellText();
void SetGridClippingRegion(wxDC *dc);
void OnMouseEvent(wxMouseEvent& event);
void OnSize(wxSizeEvent& event);
void OnText(wxCommandEvent& ev);
+ void OnTextEnter(wxCommandEvent& ev);
void OnTextInPlace(wxCommandEvent& ev);
+ void OnTextInPlaceEnter(wxCommandEvent& ev);
void OnGridScroll(wxScrollEvent& ev);
protected:
bool m_editable;
bool m_editInPlace;
bool m_inOnTextInPlace;
+ bool m_inScroll;
int m_totalRows;
int m_totalCols;
int m_bottomOfSheet; // Calculated from m_rowHeights
int m_totalGridWidth; // Total 'virtual' size
int m_totalGridHeight;
+ int m_viewHeight; // Number of rows displayed
+ int m_viewWidth; // Number of columns displayed
int m_cellHeight; // For now, a default
int m_verticalLabelWidth;
int m_horizontalLabelHeight;
wxBrush m_labelBackgroundBrush;
wxFont m_labelTextFont;
wxPen m_divisionPen;
+ wxPen m_highlightPen;
wxBitmap* m_doubleBufferingBitmap;
// Position of Edit control
wxColour backgroundColour;
wxBrush backgroundBrush;
wxBitmap* cellBitmap;
- int alignment;
+ void* cellData; // intended for additional data associated with a cell
+ int alignment;
wxGridCell(wxGenericGrid *window = (wxGenericGrid *) NULL);
~wxGridCell();
void SetAlignment(int align) { alignment = align; }
wxBitmap *GetCellBitmap() const { return cellBitmap; }
void SetCellBitmap(wxBitmap *bitmap) { cellBitmap = bitmap; }
+
+ void *SetCellData(void *data) { void *rc = cellData; cellData = data; return rc; }
+ void *GetCellData() const { return cellData; }
};
class WXDLLEXPORT wxGrid : public wxGenericGrid
: wxGenericGrid(parent, x, y, width, height, style, name)
{
}
+ wxGrid(wxWindow *parent, wxWindowID id, const wxPoint& pos,
+ const wxSize& size, long style = 0, const wxString& name = "grid")
+ : wxGenericGrid(parent, id, pos, size, style, name)
+ {
+ }
+
};
class WXDLLEXPORT wxGridEvent : public wxCommandEvent
bool m_control;
bool m_shift;
wxGridCell* m_cell;
+
+ int GetRow() const { return m_row; }
+ int GetCol() const { return m_col; }
+ wxPoint GetPosition() const { return wxPoint( m_x, m_y ); }
+ wxGridCell* GetCell() const { return m_cell; }
+ bool ControlDown() const { return m_control; }
+ bool ShiftDown() const { return m_shift; }
};
const wxEventType wxEVT_GRID_SELECT_CELL = wxEVT_FIRST + 1575;
typedef void (wxEvtHandler::*wxGridEventFunction)(wxGridEvent&);
-#define EVT_GRID_SELECT_CELL(fn) { wxEVT_GRID_SELECT_CELL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
-#define EVT_GRID_CREATE_CELL(fn) { wxEVT_GRID_CREATE_CELL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
-#define EVT_GRID_CHANGE_LABELS(fn) { wxEVT_GRID_CHANGE_LABELS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
-#define EVT_GRID_CHANGE_SEL_LABEL(fn) { wxEVT_GRID_CHANGE_SEL_LABEL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
-#define EVT_GRID_CELL_CHANGE(fn) { wxEVT_GRID_CELL_CHANGE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
-#define EVT_GRID_CELL_LCLICK(fn) { wxEVT_GRID_CELL_LCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
-#define EVT_GRID_CELL_RCLICK(fn) { wxEVT_GRID_CELL_RCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
-#define EVT_GRID_LABEL_LCLICK(fn) { wxEVT_GRID_LABEL_LCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
-#define EVT_GRID_LABEL_RCLICK(fn) { wxEVT_GRID_LABEL_RCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL },
+#define EVT_GRID_SELECT_CELL(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_SELECT_CELL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+#define EVT_GRID_CREATE_CELL(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_CREATE_CELL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+#define EVT_GRID_CHANGE_LABELS(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_CHANGE_LABELS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+#define EVT_GRID_CHANGE_SEL_LABEL(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_CHANGE_SEL_LABEL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+#define EVT_GRID_CELL_CHANGE(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_CELL_CHANGE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+#define EVT_GRID_CELL_LCLICK(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_CELL_LCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+#define EVT_GRID_CELL_RCLICK(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_CELL_RCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+#define EVT_GRID_LABEL_LCLICK(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_LABEL_LCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+#define EVT_GRID_LABEL_RCLICK(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_GRID_LABEL_RCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL),
+
+#endif // wxUSE_GRID
#endif // __GRIDH_G__