mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2026-01-05 03:20:08 +01:00
Fix EndEdit to use the newvalue/None as the return value instead of bool and a parameter pass-through.
Add first grid sample. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@73502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
63
etg/grid.py
63
etg/grid.py
@@ -166,7 +166,7 @@ def run():
|
|||||||
('BeginEdit', "virtual void BeginEdit(int row, int col, wxGrid* grid);"),
|
('BeginEdit', "virtual void BeginEdit(int row, int col, wxGrid* grid);"),
|
||||||
('Clone', "virtual wxGridCellEditor* Clone() const;"),
|
('Clone', "virtual wxGridCellEditor* Clone() const;"),
|
||||||
('Create', "virtual void Create(wxWindow* parent, wxWindowID id, wxEvtHandler* evtHandler);"),
|
('Create', "virtual void Create(wxWindow* parent, wxWindowID id, wxEvtHandler* evtHandler);"),
|
||||||
('EndEdit', "virtual bool EndEdit(int row, int col, const wxGrid* grid, const wxString& oldval, wxString* newval);"),
|
#('EndEdit', "virtual bool EndEdit(int row, int col, const wxGrid* grid, const wxString& oldval, wxString* newval);"),
|
||||||
('ApplyEdit', "virtual void ApplyEdit(int row, int col, wxGrid* grid);"),
|
('ApplyEdit', "virtual void ApplyEdit(int row, int col, wxGrid* grid);"),
|
||||||
('Reset', "virtual void Reset();"),
|
('Reset', "virtual void Reset();"),
|
||||||
('GetValue', "virtual wxString GetValue() const;"),
|
('GetValue', "virtual wxString GetValue() const;"),
|
||||||
@@ -176,9 +176,66 @@ def run():
|
|||||||
klass.addItem(etgtools.WigCode(code))
|
klass.addItem(etgtools.WigCode(code))
|
||||||
|
|
||||||
|
|
||||||
# TODO: Fix up EndEdit so it returns newVal on success or None on failure
|
# Fix up EndEdit so it returns newval on success or None on failure
|
||||||
|
pureVirtual = False
|
||||||
|
if klass.findItem('EndEdit'):
|
||||||
|
klass.find('EndEdit').ignore()
|
||||||
|
pureVirtual = True
|
||||||
|
|
||||||
|
klass.addCppMethod('PyObject*', 'EndEdit', '(int row, int col, const wxGrid* grid, const wxString& oldval)',
|
||||||
|
cppSignature='bool (int row, int col, const wxGrid* grid, const wxString& oldval, wxString* newval)',
|
||||||
|
pyArgsString='(row, col, grid, oldval)',
|
||||||
|
isVirtual=True,
|
||||||
|
isPureVirtual=pureVirtual,
|
||||||
|
doc="""\
|
||||||
|
End editing the cell.
|
||||||
|
|
||||||
|
This function must check if the current value of the editing cell
|
||||||
|
is valid and different from the original value in its string
|
||||||
|
form. If not then simply return None. If it has changed then
|
||||||
|
this method should save the new value so that ApplyEdit can
|
||||||
|
apply it later and the string representation of the new value
|
||||||
|
should be returned.
|
||||||
|
|
||||||
|
Notice that this method shoiuld not modify the grid as the
|
||||||
|
change could still be vetoed.
|
||||||
|
""",
|
||||||
|
|
||||||
|
# Code for Python --> C++ calls. Make it return newval or None.
|
||||||
|
body="""\
|
||||||
|
bool rv;
|
||||||
|
wxString newval;
|
||||||
|
rv = self->EndEdit(row, col, grid, *oldval, &newval);
|
||||||
|
if (rv) {
|
||||||
|
return wx2PyString(newval);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
""",
|
||||||
|
|
||||||
|
# Code for C++ --> Python calls. This is used when a C++ method
|
||||||
|
# call needs to be reflected to a call to the overridden Python
|
||||||
|
# method, so we need to translate between the real C++ siganture
|
||||||
|
# and the Python signature.
|
||||||
|
virtualCatcherCode="""\
|
||||||
|
// VirtualCatcherCode for wx.grid.GridCellEditor.EndEdit
|
||||||
|
PyObject *result;
|
||||||
|
result = sipCallMethod(0, sipMethod, "iiDN", row, col,
|
||||||
|
const_cast<wxGrid *>(grid),sipType_wxGrid,NULL);
|
||||||
|
if (result == Py_None) {
|
||||||
|
sipRes = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sipRes = true;
|
||||||
|
*newval = Py2wxString(result);
|
||||||
|
}
|
||||||
|
Py_DECREF(result);
|
||||||
|
""" if pureVirtual else "", # only used with the base class
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
c = module.find('wxGridCellEditor')
|
c = module.find('wxGridCellEditor')
|
||||||
c.addPrivateCopyCtor()
|
c.addPrivateCopyCtor()
|
||||||
c.find('~wxGridCellEditor').ignore(False)
|
c.find('~wxGridCellEditor').ignore(False)
|
||||||
|
|||||||
15
samples/grid/simple.py
Normal file
15
samples/grid/simple.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import wx
|
||||||
|
import wx.grid
|
||||||
|
|
||||||
|
class TestFrame(wx.Frame):
|
||||||
|
def __init__(self, *args, **kw):
|
||||||
|
wx.Frame.__init__(self, *args, **kw)
|
||||||
|
self.grid = wx.grid.Grid(self)
|
||||||
|
self.grid.CreateGrid(25, 25)
|
||||||
|
|
||||||
|
|
||||||
|
app = wx.App()
|
||||||
|
frm = TestFrame(None, title="Simple Test Grid")
|
||||||
|
frm.Show()
|
||||||
|
app.MainLoop()
|
||||||
|
|
||||||
@@ -80,29 +80,17 @@ class grid_Tests(wtc.WidgetTestCase):
|
|||||||
|
|
||||||
def test_grid17(self):
|
def test_grid17(self):
|
||||||
class MyEditor(wx.grid.GridCellEditor):
|
class MyEditor(wx.grid.GridCellEditor):
|
||||||
def Clone(self):
|
def Clone(self): return MyEditor()
|
||||||
return MyEditor()
|
def BeginEdit(self, row, col, grid): pass
|
||||||
|
def Create(self, parent, id, evtHandler): pass
|
||||||
def BeginEdit(self, row, col, grid):
|
def EndEdit(self, row, col, grid, oldval): return None
|
||||||
pass
|
def ApplyEdit(self, row, col, grid): pass
|
||||||
|
def Reset(self): pass
|
||||||
def Create(self, parent, id, evtHandler):
|
def GetValue(self): return ""
|
||||||
pass
|
|
||||||
|
|
||||||
def EndEdit(self, row, col, grid, oldval):
|
|
||||||
return None
|
|
||||||
|
|
||||||
def ApplyEdit(self, row, col, grid):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def Reset(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def GetValue(self):
|
|
||||||
return ""
|
|
||||||
|
|
||||||
e = MyEditor()
|
e = MyEditor()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_grid18(self):
|
def test_grid18(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user