+// bool Create(wxWindow *parent,
+// wxWindowID id = wxID_ANY,
+// const wxPoint& pos = wxDefaultPosition,
+// const wxSize& size = wxDefaultSize,
+// long style = 0,
+// const wxString& name = wxPyPanelNameStr);
+
+
+// // operations
+// // ----------
+
+// // set the number of lines the window contains for each axis: the derived
+// // class must provide the widths and heights for all lines with indices up
+// // to each of the one given here in its OnGetColumnWidth() and
+// // OnGetRowHeight()
+// void SetRowColumnCounts(size_t rowCount, size_t columnCount);
+
+// // with physical scrolling on, the device origin is changed properly when
+// // a wxPaintDC is prepared, children are actually moved and layed out
+// // properly, and the contents of the window (pixels) are actually moved
+// void EnablePhysicalScrolling(bool scrolling = true);
+
+// // scroll to the specified line: it will become the first visible line in
+// // the window
+// //
+// // return true if we scrolled the window, false if nothing was done
+// bool ScrollToRow(size_t row);
+// bool ScrollToColumn(size_t column);
+// bool ScrollToRowColumn(size_t row, size_t column);
+
+// // scroll by the specified number of lines/pages
+// virtual bool ScrollRows(int rows);
+// virtual bool ScrollColumns(int columns);
+// virtual bool ScrollRowsColumns(int rows, int columns);
+// virtual bool ScrollRowPages(int pages);
+// virtual bool ScrollColumnPages(int pages);
+// virtual bool ScrollPages(int rowPages, int columnPages);
+
+// // redraw the specified line
+// virtual void RefreshRow(size_t line);
+// virtual void RefreshColumn(size_t line);
+// virtual void RefreshRowColumn(size_t row, size_t column);
+
+// // redraw all lines in the specified range (inclusive)
+// virtual void RefreshRows(size_t from, size_t to);
+// virtual void RefreshColumns(size_t from, size_t to);
+// virtual void RefreshRowsColumns(size_t fromRow, size_t toRow,
+// size_t fromColumn, size_t toColumn);
+
+// // return the horizontal and vertical line within a wxPoint at the
+// // specified (in physical coordinates) position or.
+
+// // wxNOT_FOUND in either or both axes if no line is present at the
+// // requested coordinates, i.e. if it is past the last lines
+// %Rename(HitTestXY, wxPoint, HitTest(wxCoord x, wxCoord y) const);
+// wxPoint HitTest(const wxPoint& pt) const;
+
+// // recalculate all our parameters and redisplay all lines
+// virtual void RefreshAll();
+
+
+// // accessors
+// // ---------
+
+// // get the number of lines this window contains (previously set by
+// // SetLineCount())
+// size_t GetRowCount() const;
+// size_t GetColumnCount() const;
+// wxSize GetRowColumnCounts() const;
+
+// // get the first currently visible line/lines
+// size_t GetVisibleRowsBegin() const;
+// size_t GetVisibleColumnsBegin() const;
+// wxPoint GetVisibleBegin() const;
+
+// // get the last currently visible line/lines
+// size_t GetVisibleRowsEnd() const;
+// size_t GetVisibleColumnsEnd() const;
+// wxPoint GetVisibleEnd() const;
+
+// // is this line currently visible?
+// bool IsRowVisible(size_t row) const;
+// bool IsColumnVisible(size_t column) const;
+// bool IsVisible(size_t row, size_t column) const;
+
+
+// // find the index of the horizontal line we need to show at the top of the
+// // window such that the last (fully or partially) visible line is the given
+// // one
+// size_t FindFirstFromRight(size_t columnLast, bool fullyVisible = false);
+
+// // find the index of the vertical line we need to show at the top of the
+// // window such that the last (fully or partially) visible line is the given
+// // one
+// size_t FindFirstFromBottom(size_t lineLast, bool fullyVisible = false);