X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c6e3872b391fd2d3b3ff1cee596dd143345f686..bbdcf8c20026e54ca4733b19e9432d178ee8f9d1:/wxPython/src/grid.i diff --git a/wxPython/src/grid.i b/wxPython/src/grid.i index 42544af69c..48bfc14501 100644 --- a/wxPython/src/grid.i +++ b/wxPython/src/grid.i @@ -39,8 +39,7 @@ MAKE_CONST_WXSTRING_NOSWIG(EmptyString); MAKE_CONST_WXSTRING_NOSWIG(PanelNameStr); -MAKE_CONST_WXSTRING2(DateTimeFormatStr, wxT("%c")); - +MAKE_CONST_WXSTRING_NOSWIG(DefaultDateTimeFormat); //--------------------------------------------------------------------------- // OOR related typemaps and helper functions @@ -63,7 +62,8 @@ PyObject* wxPyMake_##TYPE(TYPE* source, bool setThisOwn) { \ wxPyOORClientData* data = (wxPyOORClientData*)source->GetClientObject(); \ if (data) { \ target = data->m_obj; \ - Py_INCREF(target); \ + if (target) \ + Py_INCREF(target); \ } \ /* Otherwise make a new wrapper for it the old fashioned way and \ give it the OOR treatment */ \ @@ -99,7 +99,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) wxGridCellAttr* CBNAME(int a, int b, wxGridCellAttr::wxAttrKind c) { \ wxGridCellAttr* rval = NULL; \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* ro; \ wxGridCellAttr* ptr; \ @@ -123,7 +123,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__GCAINTINT(PCLASS, CBNAME) \ void CBNAME(wxGridCellAttr *attr, int a, int b) { \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ bool found; \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* obj = wxPyMake_wxGridCellAttr(attr,false); \ @@ -142,7 +142,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__GCAINT(PCLASS, CBNAME) \ void CBNAME(wxGridCellAttr *attr, int val) { \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ bool found; \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* obj = wxPyMake_wxGridCellAttr(attr,false); \ @@ -161,7 +161,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK_INT__pure(CBNAME) \ int CBNAME() { \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ int rval = 0; \ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); \ @@ -173,7 +173,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK_BOOL_INTINT_pure(CBNAME) \ bool CBNAME(int a, int b) { \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ bool rval = 0; \ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)",a,b)); \ @@ -184,7 +184,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK_STRING_INTINT_pure(CBNAME) \ wxString CBNAME(int a, int b) { \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ wxString rval; \ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ PyObject* ro; \ @@ -201,7 +201,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__INTINTSTRING_pure(CBNAME) \ void CBNAME(int a, int b, const wxString& c) { \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ PyObject* s = wx2PyString(c); \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iiO)",a,b,s));\ @@ -214,7 +214,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK_STRING_INTINT(PCLASS, CBNAME) \ wxString CBNAME(int a, int b) { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ wxString rval; \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* ro; \ @@ -238,7 +238,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) bool CBNAME(int a, int b, const wxString& c) { \ bool rval = 0; \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* s = wx2PyString(c); \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iiO)",a,b,s));\ @@ -260,7 +260,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) long CBNAME(int a, int b) { \ long rval; \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \ wxPyEndBlockThreads(blocked); \ @@ -278,7 +278,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) bool CBNAME(int a, int b) { \ bool rval = 0; \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \ wxPyEndBlockThreads(blocked); \ @@ -295,7 +295,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK_DOUBLE_INTINT(PCLASS, CBNAME) \ double CBNAME(int a, int b) { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ double rval; \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* ro; \ @@ -320,7 +320,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__(PCLASS, CBNAME) \ void CBNAME() { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); \ wxPyEndBlockThreads(blocked); \ @@ -338,7 +338,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) bool CBNAME(size_t a, size_t b) { \ bool rval = 0; \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \ wxPyEndBlockThreads(blocked); \ @@ -356,7 +356,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) bool CBNAME(size_t a) { \ bool rval = 0; \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(i)", a)); \ wxPyEndBlockThreads(blocked); \ @@ -372,7 +372,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK_STRING_INT(PCLASS, CBNAME) \ wxString CBNAME(int a) { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ wxString rval; \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* ro; \ @@ -395,7 +395,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__INTSTRING(PCLASS, CBNAME) \ void CBNAME(int a, const wxString& c) { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* s = wx2PyString(c); \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iO)",a,s)); \ @@ -416,7 +416,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) bool CBNAME() { \ bool rval = 0; \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); \ wxPyEndBlockThreads(blocked); \ @@ -433,7 +433,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__SIZETINT(PCLASS, CBNAME) \ void CBNAME(size_t a, int b) { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \ wxPyEndBlockThreads(blocked); \ @@ -450,7 +450,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__INTINTLONG(PCLASS, CBNAME) \ void CBNAME(int a, int b, long c) { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iii)", a,b,c)); \ wxPyEndBlockThreads(blocked); \ @@ -467,7 +467,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__INTINTDOUBLE(PCLASS, CBNAME) \ void CBNAME(int a, int b, double c) { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iif)", a,b,c)); \ wxPyEndBlockThreads(blocked); \ @@ -483,7 +483,7 @@ wxPyMake_TEMPLATE(wxGridTableBase) #define PYCALLBACK__INTINTBOOL(PCLASS, CBNAME) \ void CBNAME(int a, int b, bool c) { \ bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iii)", a,b,c)); \ wxPyEndBlockThreads(blocked); \ @@ -521,28 +521,30 @@ const wxRect wxGridNoCellRect; %mutable; -%rename(GRID_DEFAULT_NUMBER_ROWS) WXGRID_DEFAULT_NUMBER_ROWS; -%rename(GRID_DEFAULT_NUMBER_COLS) WXGRID_DEFAULT_NUMBER_COLS; -%rename(GRID_DEFAULT_ROW_HEIGHT) WXGRID_DEFAULT_ROW_HEIGHT; -%rename(GRID_DEFAULT_COL_WIDTH) WXGRID_DEFAULT_COL_WIDTH; -%rename(GRID_DEFAULT_COL_LABEL_HEIGHT) WXGRID_DEFAULT_COL_LABEL_HEIGHT; -%rename(GRID_DEFAULT_ROW_LABEL_WIDTH) WXGRID_DEFAULT_ROW_LABEL_WIDTH; -%rename(GRID_LABEL_EDGE_ZONE) WXGRID_LABEL_EDGE_ZONE; -%rename(GRID_MIN_ROW_HEIGHT) WXGRID_MIN_ROW_HEIGHT; -%rename(GRID_MIN_COL_WIDTH) WXGRID_MIN_COL_WIDTH; -%rename(GRID_DEFAULT_SCROLLBAR_WIDTH) WXGRID_DEFAULT_SCROLLBAR_WIDTH; +%{ +#define wxGRID_DEFAULT_NUMBER_ROWS WXGRID_DEFAULT_NUMBER_ROWS +#define wxGRID_DEFAULT_NUMBER_COLS WXGRID_DEFAULT_NUMBER_COLS +#define wxGRID_DEFAULT_ROW_HEIGHT WXGRID_DEFAULT_ROW_HEIGHT +#define wxGRID_DEFAULT_COL_WIDTH WXGRID_DEFAULT_COL_WIDTH +#define wxGRID_DEFAULT_COL_LABEL_HEIGHT WXGRID_DEFAULT_COL_LABEL_HEIGHT +#define wxGRID_DEFAULT_ROW_LABEL_WIDTH WXGRID_DEFAULT_ROW_LABEL_WIDTH +#define wxGRID_LABEL_EDGE_ZONE WXGRID_LABEL_EDGE_ZONE +#define wxGRID_MIN_ROW_HEIGHT WXGRID_MIN_ROW_HEIGHT +#define wxGRID_MIN_COL_WIDTH WXGRID_MIN_COL_WIDTH +#define wxGRID_DEFAULT_SCROLLBAR_WIDTH WXGRID_DEFAULT_SCROLLBAR_WIDTH +%} enum { - WXGRID_DEFAULT_NUMBER_ROWS, - WXGRID_DEFAULT_NUMBER_COLS, - WXGRID_DEFAULT_ROW_HEIGHT, - WXGRID_DEFAULT_COL_WIDTH, - WXGRID_DEFAULT_COL_LABEL_HEIGHT, - WXGRID_DEFAULT_ROW_LABEL_WIDTH, - WXGRID_LABEL_EDGE_ZONE, - WXGRID_MIN_ROW_HEIGHT, - WXGRID_MIN_COL_WIDTH, - WXGRID_DEFAULT_SCROLLBAR_WIDTH + wxGRID_DEFAULT_NUMBER_ROWS, + wxGRID_DEFAULT_NUMBER_COLS, + wxGRID_DEFAULT_ROW_HEIGHT, + wxGRID_DEFAULT_COL_WIDTH, + wxGRID_DEFAULT_COL_LABEL_HEIGHT, + wxGRID_DEFAULT_ROW_LABEL_WIDTH, + wxGRID_LABEL_EDGE_ZONE, + wxGRID_MIN_ROW_HEIGHT, + wxGRID_MIN_COL_WIDTH, + wxGRID_DEFAULT_SCROLLBAR_WIDTH }; @@ -556,7 +558,8 @@ class wxGridCellRenderer public: %extend { void _setOORInfo(PyObject* _self) { - self->SetClientObject(new wxPyOORClientData(_self)); + if (!self->GetClientObject()) + self->SetClientObject(new wxPyOORClientData(_self)); } } @@ -589,7 +592,7 @@ public: void Draw(wxGrid& grid, wxGridCellAttr& attr, wxDC& dc, const wxRect& rect, int row, int col, bool isSelected) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "Draw")) { PyObject* go = wxPyMake_wxObject(&grid,false); PyObject* dco = wxPyMake_wxObject(&dc,false); @@ -609,7 +612,7 @@ public: wxSize GetBestSize(wxGrid& grid, wxGridCellAttr& attr, wxDC& dc, int row, int col) { wxSize rval; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "GetBestSize")) { PyObject* ro; wxSize* ptr; @@ -652,7 +655,7 @@ public: wxGridCellRenderer *Clone() const { wxGridCellRenderer* rval = NULL; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "Clone")) { PyObject* ro; wxGridCellRenderer* ptr; @@ -732,8 +735,8 @@ class wxGridCellDateTimeRenderer : public wxGridCellStringRenderer { public: %pythonAppend wxGridCellDateTimeRenderer "self._setOORInfo(self)" - wxGridCellDateTimeRenderer(wxString outformat = wxPyDateTimeFormatStr, - wxString informat = wxPyDateTimeFormatStr); + wxGridCellDateTimeRenderer(wxString outformat = wxPyDefaultDateTimeFormat, + wxString informat = wxPyDefaultDateTimeFormat); }; @@ -762,7 +765,8 @@ class wxGridCellEditor public: %extend { void _setOORInfo(PyObject* _self) { - self->SetClientObject(new wxPyOORClientData(_self)); + if (!self->GetClientObject()) + self->SetClientObject(new wxPyOORClientData(_self)); } } @@ -805,7 +809,7 @@ public: wxPyGridCellEditor() : wxGridCellEditor() {} void Create(wxWindow* parent, wxWindowID id, wxEvtHandler* evtHandler) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "Create")) { PyObject* po = wxPyMake_wxObject(parent,false); PyObject* eo = wxPyMake_wxObject(evtHandler,false); @@ -819,7 +823,7 @@ public: void BeginEdit(int row, int col, wxGrid* grid) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "BeginEdit")) { PyObject* go = wxPyMake_wxObject(grid,false); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iiO)", row, col, go)); @@ -830,8 +834,8 @@ public: bool EndEdit(int row, int col, wxGrid* grid) { - bool rv = False; - bool blocked = wxPyBeginBlockThreads(); + bool rv = false; + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "EndEdit")) { PyObject* go = wxPyMake_wxObject(grid,false); rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iiO)", row, col, go)); @@ -844,7 +848,7 @@ public: wxGridCellEditor* Clone() const { wxGridCellEditor* rval = NULL; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "Clone")) { PyObject* ro; wxGridCellEditor* ptr; @@ -862,7 +866,7 @@ public: void Show(bool show, wxGridCellAttr *attr) { bool found; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "Show"))) { PyObject* ao = wxPyMake_wxGridCellAttr(attr,false); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iO)", show, ao)); @@ -879,7 +883,7 @@ public: void PaintBackground(const wxRect& rectCell, wxGridCellAttr *attr) { bool found; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "PaintBackground)"))) { PyObject* ao = wxPyMake_wxGridCellAttr(attr,false); PyObject* ro = wxPyConstructObject((void*)&rectCell, wxT("wxRect"), 0); @@ -988,7 +992,7 @@ public: %pythonAppend wxGridCellChoiceEditor "self._setOORInfo(self)" wxGridCellChoiceEditor(int choices = 0, const wxString* choices_array = NULL, - bool allowOthers = False); + bool allowOthers = false); virtual wxString GetValue(); }; @@ -1030,14 +1034,15 @@ public: %extend { void _setOORInfo(PyObject* _self) { - self->SetClientObject(new wxPyOORClientData(_self)); + if (!self->GetClientObject()) + self->SetClientObject(new wxPyOORClientData(_self)); } } %pythonAppend wxGridCellAttr "self._setOORInfo(self)" wxGridCellAttr(wxGridCellAttr *attrDefault = NULL); - + wxGridCellAttr *Clone() const; void MergeWith(wxGridCellAttr *mergefrom); void IncRef(); @@ -1047,8 +1052,8 @@ public: 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 SetOverflow( bool allow = true ); + void SetReadOnly(bool isReadOnly = true); void SetRenderer(wxGridCellRenderer *renderer); void SetEditor(wxGridCellEditor* editor); @@ -1095,7 +1100,8 @@ public: %extend { void _setOORInfo(PyObject* _self) { - self->SetClientObject(new wxPyOORClientData(_self)); + if (!self->GetClientObject()) + self->SetClientObject(new wxPyOORClientData(_self)); } } @@ -1156,7 +1162,8 @@ public: %extend { void _setOORInfo(PyObject* _self) { - self->SetClientObject(new wxPyOORClientData(_self)); + if (!self->GetClientObject()) + self->SetClientObject(new wxPyOORClientData(_self)); } } @@ -1245,7 +1252,7 @@ public: wxString GetValue(int row, int col) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); wxString rval; if (wxPyCBH_findCallback(m_myInst, "GetValue")) { PyObject* ro; @@ -1265,7 +1272,7 @@ public: } void SetValue(int row, int col, const wxString& val) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "SetValue")) { PyObject* s = wx2PyString(val); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iiO)",row,col,s)); @@ -1279,7 +1286,7 @@ public: // the GetValue and SetValue python methods. long GetValueAsLong( int row, int col ) { long rval = 0; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "GetValue")) { PyObject* ro; PyObject* num; @@ -1299,7 +1306,7 @@ public: double GetValueAsDouble( int row, int col ) { double rval = 0.0; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "GetValue")) { PyObject* ro; PyObject* num; @@ -1322,7 +1329,7 @@ public: } void SetValueAsLong( int row, int col, long value ) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "SetValue")) { wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iii)", row, col, value)); } @@ -1330,7 +1337,7 @@ public: } void SetValueAsDouble( int row, int col, double value ) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "SetValue")) { wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iid)", row, col, value)); } @@ -1445,7 +1452,7 @@ bool wxGridCellCoords_helper(PyObject* source, wxGridCellCoords** obj) { if (source == Py_None) { **obj = wxGridCellCoords(-1,-1); - return True; + return true; } // If source is an object instance then it may already be the right type @@ -1454,7 +1461,7 @@ bool wxGridCellCoords_helper(PyObject* source, wxGridCellCoords** obj) { if (! wxPyConvertSwigPtr(source, (void **)&ptr, wxT("wxGridCellCoords"))) goto error; *obj = ptr; - return True; + return true; } // otherwise a 2-tuple of integers is expected else if (PySequence_Check(source) && PyObject_Length(source) == 2) { @@ -1468,12 +1475,12 @@ bool wxGridCellCoords_helper(PyObject* source, wxGridCellCoords** obj) { **obj = wxGridCellCoords(PyInt_AsLong(o1), PyInt_AsLong(o2)); Py_DECREF(o1); Py_DECREF(o2); - return True; + return true; } error: PyErr_SetString(PyExc_TypeError, "Expected a 2-tuple of integers or a wxGridCellCoords object."); - return False; + return false; } @@ -1482,13 +1489,13 @@ bool wxGridCellCoords_typecheck(PyObject* source) { if (wxPySwigInstance_Check(source) && wxPyConvertSwigPtr(source, (void **)&ptr, wxT("wxGridCellCoords"))) - return True; + return true; PyErr_Clear(); if (PySequence_Check(source) && PySequence_Length(source) == 2) - return True; + return true; - return False; + return false; } %} @@ -1584,6 +1591,9 @@ class wxGrid : public wxScrolledWindow { public: %pythonAppend wxGrid "self._setOORInfo(self)" + %pythonAppend wxGrid() "" + + %typemap(out) wxGrid*; // turn off this typemap wxGrid( wxWindow *parent, wxWindowID id=-1, @@ -1592,7 +1602,11 @@ public: long style = wxWANTS_CHARS, const wxString& name = wxPyPanelNameStr); - %name(PreGrid) wxGrid(); + %RenameCtor(PreGrid, wxGrid()); + + + // Turn it back on again + %typemap(out) wxGrid* { $result = wxPyMake_wxObject($1, $owner); } bool Create( wxWindow *parent, @@ -1630,17 +1644,17 @@ public: wxGridTableBase * GetTable() const; - bool SetTable( wxGridTableBase *table, bool takeOwnership=False, + bool SetTable( wxGridTableBase *table, bool takeOwnership=false, WXGRIDSELECTIONMODES selmode = wxGrid::wxGridSelectCells ); void ClearGrid(); - bool InsertRows( int pos = 0, int numRows = 1, bool updateLabels=True ); - bool AppendRows( int numRows = 1, bool updateLabels=True ); - bool DeleteRows( int pos = 0, int numRows = 1, bool updateLabels=True ); - bool InsertCols( int pos = 0, int numCols = 1, bool updateLabels=True ); - bool AppendCols( int numCols = 1, bool updateLabels=True ); - bool DeleteCols( int pos = 0, int numCols = 1, bool updateLabels=True ); + bool InsertRows( int pos = 0, int numRows = 1, bool updateLabels=true ); + bool AppendRows( int numRows = 1, bool updateLabels=true ); + bool DeleteRows( int pos = 0, int numRows = 1, bool updateLabels=true ); + bool InsertCols( int pos = 0, int numCols = 1, bool updateLabels=true ); + bool AppendCols( int numCols = 1, bool updateLabels=true ); + bool DeleteCols( int pos = 0, int numCols = 1, bool updateLabels=true ); // this function is called when the current cell highlight must be redrawn @@ -1682,7 +1696,7 @@ public: bool IsEditable(); void EnableEditing( bool edit ); - void EnableCellEditControl( bool enable = True ); + void EnableCellEditControl( bool enable = true ); void DisableCellEditControl(); bool CanEnableCellControl() const; bool IsCellEditControlEnabled() const; @@ -1726,8 +1740,8 @@ public: // check to see if a cell is either wholly visible (the default arg) or // at least partially visible in the grid window // - bool IsVisible( int row, int col, bool wholeCellVisible = True ); - // TODO: ??? bool IsVisible( const wxGridCellCoords& coords, bool wholeCellVisible = True ); + bool IsVisible( int row, int col, bool wholeCellVisible = true ); + // TODO: ??? bool IsVisible( const wxGridCellCoords& coords, bool wholeCellVisible = true ); void MakeCellVisible( int row, int col ); // TODO: ??? void MakeCellVisible( const wxGridCellCoords& coords ); @@ -1788,21 +1802,32 @@ public: void SetCellHighlightPenWidth(int width); void SetCellHighlightROPenWidth(int width); - void EnableDragRowSize( bool enable = True ); + void EnableDragRowSize( bool enable = true ); void DisableDragRowSize(); bool CanDragRowSize(); - void EnableDragColSize( bool enable = True ); + void EnableDragColSize( bool enable = true ); void DisableDragColSize(); bool CanDragColSize(); - void EnableDragGridSize(bool enable = True); + void EnableDragGridSize(bool enable = true); void DisableDragGridSize(); bool CanDragGridSize(); + void EnableDragCell( bool enable = true ); + void DisableDragCell(); + bool CanDragCell(); + // 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); + // returns the attribute we may modify in place: a new one if this cell + // doesn't have any yet or the existing one if it does + // + // DecRef() must be called on the returned pointer, as usual + wxGridCellAttr *GetOrCreateCellAttr(int row, int col) const; + + // shortcuts for setting the column parameters // set the format for the data in the column: default is string @@ -1811,7 +1836,7 @@ public: void SetColFormatFloat(int col, int width = -1, int precision = -1); void SetColFormatCustom(int col, const wxString& typeName); - void EnableGridLines( bool enable = True ); + void EnableGridLines( bool enable = true ); bool GridLinesEnabled(); // ------ row and col formatting @@ -1842,22 +1867,22 @@ public: void, GetCellSize( int row, int col, int *OUTPUT, int *OUTPUT ), "GetCellSize(int row, int col) -> (num_rows, num_cols)"); - void SetDefaultRowSize( int height, bool resizeExistingRows = False ); + void SetDefaultRowSize( int height, bool resizeExistingRows = false ); void SetRowSize( int row, int height ); - void SetDefaultColSize( int width, bool resizeExistingCols = False ); + void SetDefaultColSize( int width, bool resizeExistingCols = false ); void SetColSize( int col, int width ); // 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 - void AutoSizeColumn( int col, bool setAsMin = True ); - void AutoSizeRow( int row, bool setAsMin = True ); + void AutoSizeColumn( int col, bool setAsMin = true ); + void AutoSizeRow( int row, bool setAsMin = true ); // auto size all columns (very ineffective for big grids!) - void AutoSizeColumns( bool setAsMin = True ); - void AutoSizeRows( bool setAsMin = True ); + void AutoSizeColumns( bool setAsMin = true ); + void AutoSizeRows( bool setAsMin = true ); // auto size the grid, that is make the columns/rows of the "right" size // and also set the grid size to just fit its contents @@ -1920,15 +1945,15 @@ public: bool IsReadOnly(int row, int col) const; // make the cell editable/readonly - void SetReadOnly(int row, int col, bool isReadOnly = True); + void SetReadOnly(int row, int col, bool isReadOnly = true); // ------ selections of blocks of cells // - void SelectRow( int row, bool addToSelected = False ); - void SelectCol( int col, bool addToSelected = False ); + void SelectRow( int row, bool addToSelected = false ); + void SelectCol( int col, bool addToSelected = false ); void SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol, - bool addToSelected = False ); + bool addToSelected = false ); // TODO: ??? void SelectBlock( const wxGridCellCoords& topLeft, // TODO: ??? const wxGridCellCoords& bottomRight ) @@ -1986,6 +2011,14 @@ public: wxWindow* GetGridColLabelWindow(); wxWindow* GetGridCornerLabelWindow(); + // Allow adjustment of scroll increment. The default is (15, 15). + void SetScrollLineX(int x); + void SetScrollLineY(int y); + int GetScrollLineX() const; + int GetScrollLineY() const; + + int GetScrollX(int x) const; + int GetScrollY(int y) const; static wxVisualAttributes GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); @@ -2002,8 +2035,8 @@ class wxGridEvent : public wxNotifyEvent { public: wxGridEvent(int id, wxEventType type, wxGrid* obj, - int row=-1, int col=-1, int x=-1, int y=-1, bool sel = True, - bool control=False, bool shift=False, bool alt=False, bool meta=False); + int row=-1, int col=-1, int x=-1, int y=-1, bool sel = true, + bool control=false, bool shift=false, bool alt=false, bool meta=false); virtual int GetRow(); virtual int GetCol(); @@ -2022,7 +2055,7 @@ class wxGridSizeEvent : public wxNotifyEvent public: wxGridSizeEvent(int id, wxEventType type, wxGrid* obj, int rowOrCol=-1, int x=-1, int y=-1, - bool control=False, bool shift=False, bool alt=False, bool meta=False); + bool control=false, bool shift=false, bool alt=false, bool meta=false); int GetRowOrCol(); wxPoint GetPosition(); @@ -2040,9 +2073,9 @@ public: wxGridRangeSelectEvent(int id, wxEventType type, wxGrid* obj, const wxGridCellCoords& topLeft, const wxGridCellCoords& bottomRight, - bool sel = True, - bool control=False, bool shift=False, - bool alt=False, bool meta=False); + bool sel = true, + bool control=false, bool shift=false, + bool alt=false, bool meta=false); wxGridCellCoords GetTopLeftCoords(); wxGridCellCoords GetBottomRightCoords(); @@ -2089,6 +2122,7 @@ public: %constant wxEventType wxEVT_GRID_EDITOR_SHOWN; %constant wxEventType wxEVT_GRID_EDITOR_HIDDEN; %constant wxEventType wxEVT_GRID_EDITOR_CREATED; +%constant wxEventType wxEVT_GRID_CELL_BEGIN_DRAG; @@ -2109,6 +2143,7 @@ EVT_GRID_SELECT_CELL = wx.PyEventBinder( wxEVT_GRID_SELECT_CELL ) EVT_GRID_EDITOR_SHOWN = wx.PyEventBinder( wxEVT_GRID_EDITOR_SHOWN ) EVT_GRID_EDITOR_HIDDEN = wx.PyEventBinder( wxEVT_GRID_EDITOR_HIDDEN ) EVT_GRID_EDITOR_CREATED = wx.PyEventBinder( wxEVT_GRID_EDITOR_CREATED ) +EVT_GRID_CELL_BEGIN_DRAG = wx.PyEventBinder( wxEVT_GRID_CELL_BEGIN_DRAG ) %# The same as above but with the ability to specify an identifier @@ -2128,6 +2163,8 @@ EVT_GRID_CMD_SELECT_CELL = wx.PyEventBinder( wxEVT_GRID_SELECT_CELL, EVT_GRID_CMD_EDITOR_SHOWN = wx.PyEventBinder( wxEVT_GRID_EDITOR_SHOWN, 1 ) EVT_GRID_CMD_EDITOR_HIDDEN = wx.PyEventBinder( wxEVT_GRID_EDITOR_HIDDEN, 1 ) EVT_GRID_CMD_EDITOR_CREATED = wx.PyEventBinder( wxEVT_GRID_EDITOR_CREATED, 1 ) +EVT_GRID_CMD_CELL_BEGIN_DRAG = wx.PyEventBinder( wxEVT_GRID_CELL_BEGIN_DRAG, 1 ) + } //---------------------------------------------------------------------------