-/////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
// Name: grid.i
// Purpose: SWIG definitions for the new wxGrid and related classes
//
/* Otherwise make a new wrapper for it the old fashioned way and \
give it the OOR treatment */ \
if (! target) { \
- target = wxPyConstructObject(source, #TYPE, FALSE); \
+ target = wxPyConstructObject(source, wxT(#TYPE), FALSE); \
if (target) \
source->SetClientObject(new wxPyOORClientData(target)); \
} \
bool rval = 0; \
bool found; \
wxPyBeginBlockThreads(); \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
PyObject* s = wx2PyString(c); \
rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iiO)",a,b,s));\
Py_DECREF(s); \
void CBNAME(int a, const wxString& c) { \
bool found; \
wxPyBeginBlockThreads(); \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
PyObject* s = wx2PyString(c); \
wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iO)",a,s)); \
Py_DECREF(s); \
PyObject* go = wxPyMake_wxObject(&grid);
PyObject* dco = wxPyMake_wxObject(&dc);
PyObject* ao = wxPyMake_wxGridCellAttr(&attr);
- PyObject* ro = wxPyConstructObject((void*)&rect, "wxRect", 0);
+ PyObject* ro = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0);
wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOOOiii)", go, ao, dco, ro,
row, col, isSelected));
wxControl* GetControl();
void SetControl(wxControl* control);
+ wxGridCellAttr* GetCellAttr();
+ void SetCellAttr(wxGridCellAttr* attr);
+
void SetParameters(const wxString& params);
void IncRef();
void DecRef();
}
- wxGridCellEditor*Clone() const {
+ wxGridCellEditor* Clone() const {
wxGridCellEditor* rval = NULL;
wxPyBeginBlockThreads();
if (wxPyCBH_findCallback(m_myInst, "Clone")) {
wxPyBeginBlockThreads();
if ((found = wxPyCBH_findCallback(m_myInst, "PaintBackground)"))) {
PyObject* ao = wxPyMake_wxGridCellAttr(attr);
- PyObject* ro = wxPyConstructObject((void*)&rectCell, "wxRect", 0);
+ PyObject* ro = wxPyConstructObject((void*)&rectCell, wxT("wxRect"), 0);
wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OO)", ro, ao));
DEC_PYCALLBACK__(StartingClick);
DEC_PYCALLBACK__(Destroy);
DEC_PYCALLBACK__STRING(SetParameters);
+ DEC_PYCALLBACK_STRING__constpure(GetValue);
PYPRIVATE;
};
IMP_PYCALLBACK__any(wxPyGridCellEditor, wxGridCellEditor, HandleReturn, wxKeyEvent);
IMP_PYCALLBACK__(wxPyGridCellEditor, wxGridCellEditor, StartingClick);
IMP_PYCALLBACK__(wxPyGridCellEditor, wxGridCellEditor, Destroy);
+IMP_PYCALLBACK_STRING__constpure(wxPyGridCellEditor, wxGridCellEditor, GetValue);
%}
void base_SetSize(const wxRect& rect);
void base_Show(bool show, wxGridCellAttr *attr = NULL);
void base_PaintBackground(const wxRect& rectCell, wxGridCellAttr *attr);
- void base_IsAcceptedKey(wxKeyEvent& event);
+ bool base_IsAcceptedKey(wxKeyEvent& event);
void base_StartingKey(wxKeyEvent& event);
void base_StartingClick();
void base_HandleReturn(wxKeyEvent& event);
public:
wxGridCellTextEditor();
%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ virtual wxString GetValue();
};
public:
wxGridCellNumberEditor(int min = -1, int max = -1);
%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ virtual wxString GetValue();
};
public:
wxGridCellFloatEditor();
%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ virtual wxString GetValue();
};
public:
wxGridCellBoolEditor();
%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ virtual wxString GetValue();
};
class wxGridCellChoiceEditor : public wxGridCellEditor
const wxString* choices = NULL,
bool allowOthers = FALSE);
%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ virtual wxString GetValue();
};
public:
wxGridCellEnumEditor( const wxString& choices = wxPyEmptyString );
%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ virtual wxString GetValue();
};
public:
wxGridCellAutoWrapStringEditor();
%pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ virtual wxString GetValue();
};
void SetBackgroundColour(const wxColour& colBack);
void SetFont(const wxFont& font);
void SetAlignment(int hAlign, int vAlign);
+ void SetSize(int num_rows, int num_cols);
+ void SetOverflow( bool allow = TRUE );
void SetReadOnly(bool isReadOnly = TRUE);
void SetRenderer(wxGridCellRenderer *renderer);
bool HasRenderer() const;
bool HasEditor() const;
bool HasReadWriteMode() const;
+ bool HasOverflowMode() const;
wxColour GetTextColour() const;
wxColour GetBackgroundColour() const;
wxFont GetFont() const;
void GetAlignment(int *OUTPUT, int *OUTPUT) const;
+ void GetSize(int *OUTPUT, int *OUTPUT) const;
+ bool GetOverflow() const;
wxGridCellRenderer *GetRenderer(wxGrid* grid, int row, int col) const;
wxGridCellEditor *GetEditor(wxGrid* grid, int row, int col) const;
return *self != other;
}
}
- %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())"
- %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())"
+ %pragma(python) addtoclass = "
+ def __str__(self): return str(self.asTuple())
+ def __repr__(self): return 'wxGridCellCoords'+str(self.asTuple())
+ def __len__(self): return len(self.asTuple())
+ def __getitem__(self, index): return self.asTuple()[index]
+ def __setitem__(self, index, val):
+ if index == 0: self.SetRow(val)
+ elif index == 1: self.SetCol(val)
+ else: raise IndexError
+ "
+
};
// Typemap to allow conversion of sequence objects to wxGridCellCoords...
}
%}
+
+
+// Typemap to convert an array of cells coords to a list of tuples...
+%typemap(python, out) wxGridCellCoordsArray {
+ $target = wxGridCellCoordsArray_helper($source);
+}
+
+%typemap(python, ret) wxGridCellCoordsArray {
+ delete $source;
+}
+
+
+// ...and the helper function for the above typemap.
+%{
+PyObject* wxGridCellCoordsArray_helper(const wxGridCellCoordsArray* source)
+{
+ PyObject* list = PyList_New(0);
+ size_t idx;
+ for (idx = 0; idx < source->GetCount(); idx += 1) {
+ wxGridCellCoords& coord = source->Item(idx);
+ PyObject* tup = PyTuple_New(2);
+ PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(coord.GetRow()));
+ PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(coord.GetCol()));
+ PyList_Append(list, tup);
+ Py_DECREF(tup);
+ }
+ return list;
+}
+%}
+
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// The grid itself
bool CreateGrid( int numRows, int numCols,
WXGRIDSELECTIONMODES selmode = wxGrid::wxGridSelectCells );
void SetSelectionMode(WXGRIDSELECTIONMODES selmode);
+ WXGRIDSELECTIONMODES GetSelectionMode();
// ------ grid dimensions
//
void DrawTextRectangle( wxDC& dc, const wxString&, const wxRect&,
int horizontalAlignment = wxLEFT,
- int verticalAlignment = wxTOP );
+ int verticalAlignment = wxTOP,
+ int textOrientation = wxHORIZONTAL );
// // Split a string containing newline chararcters into an array of
// // strings and return the number of lines
void EndBatch();
int GetBatchCount();
void ForceRefresh();
+ void Refresh(bool eraseb=TRUE, const wxRect* rect= NULL);
// ------ edit control functions
//
- bool IsEditable() { return m_editable; }
+ bool IsEditable();
void EnableEditing( bool edit );
void EnableCellEditControl( bool enable = TRUE );
wxFont GetLabelFont();
void GetRowLabelAlignment( int *OUTPUT, int *OUTPUT );
void GetColLabelAlignment( int *OUTPUT, int *OUTPUT );
+ int GetColLabelTextOrientation();
wxString GetRowLabelValue( int row );
wxString GetColLabelValue( int col );
wxColour GetGridLineColour();
void SetLabelFont( const wxFont& );
void SetRowLabelAlignment( int horiz, int vert );
void SetColLabelAlignment( int horiz, int vert );
+ void SetColLabelTextOrientation( int textOrientation );
void SetRowLabelValue( int row, const wxString& );
void SetColLabelValue( int col, const wxString& );
void SetGridLineColour( const wxColour& );
bool CanDragGridSize();
// this sets the specified attribute for all cells in this row/col
+ void SetAttr(int row, int col, wxGridCellAttr *attr);
void SetRowAttr(int row, wxGridCellAttr *attr);
void SetColAttr(int col, wxGridCellAttr *attr);
wxColour GetCellTextColour( int row, int col );
wxFont GetDefaultCellFont();
wxFont GetCellFont( int row, int col );
- void GetDefaultCellAlignment( int *horiz, int *vert );
- void GetCellAlignment( int row, int col, int *horiz, int *vert );
+ void GetDefaultCellAlignment( int *OUTPUT, int *OUTPUT );
+ void GetCellAlignment( int row, int col, int *OUTPUT, int *OUTPUT );
+ bool GetDefaultCellOverflow();
+ bool GetCellOverflow( int row, int col );
+ void GetCellSize( int row, int col, int *OUTPUT, int *OUTPUT );
void SetDefaultRowSize( int height, bool resizeExistingRows = FALSE );
void SetRowSize( int row, int height );
// and also set the grid size to just fit its contents
void AutoSize();
+ // autosize row height depending on label text
+ void AutoSizeRowLabelSize( int row );
+
+ // autosize column width depending on label text
+ void AutoSizeColLabelSize( int col );
+
+
// column won't be resized to be lesser width - this must be called during
// the grid creation because it won't resize the column if it's already
// narrower than the minimal width
void SetColMinimalWidth( int col, int width );
void SetRowMinimalHeight( int row, int width );
+ void SetColMinimalAcceptableWidth( int width );
+ void SetRowMinimalAcceptableHeight( int width );
+ int GetColMinimalAcceptableWidth() const;
+ int GetRowMinimalAcceptableHeight() const;
+
void SetDefaultCellBackgroundColour( const wxColour& );
void SetCellBackgroundColour( int row, int col, const wxColour& );
void SetDefaultCellTextColour( const wxColour& );
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);
bool IsInSelection( int row, int col );
// TODO: ??? bool IsInSelection( const wxGridCellCoords& coords )
+ const wxGridCellCoordsArray GetSelectedCells() const;
+ const wxGridCellCoordsArray GetSelectionBlockTopLeft() const;
+ const wxGridCellCoordsArray GetSelectionBlockBottomRight() const;
+ const wxArrayInt GetSelectedRows() const;
+ const wxArrayInt GetSelectedCols() const;
+
+ void DeselectRow( int row );
+ void DeselectCol( int col );
+ void DeselectCell( int row, int col );
+
// This function returns the rectangle that encloses the block of cells
// limited by TopLeft and BottomRight cell in device coords and clipped
//---------------------------------------------------------------------------
%init %{
- wxClassInfo::CleanUpClasses();
- wxClassInfo::InitializeClasses();
%}
//---------------------------------------------------------------------------