]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/GridCustEditor.py
Corrected _setCallbackInfo code so GiveFeedback can work
[wxWidgets.git] / wxPython / demo / GridCustEditor.py
index 668dbdc4282470d20d9f2333ee601bb082568864..06040b31ea91c0bb5474414cae7e964485db42d8 100644 (file)
@@ -1,10 +1,11 @@
-#!/usr/bin/env python
 
-from wxPython.wx import *
-from wxPython.grid import *
+import string
+
+import  wx
+import  wx.grid as gridlib
 
 #---------------------------------------------------------------------------
-class MyCellEditor(wxPyGridCellEditor):
+class MyCellEditor(gridlib.PyGridCellEditor):
     """
     This is a sample GridCellEditor that shows you how to make your own custom
     grid editors.  All the methods that can be overridden are show here.  The
@@ -13,7 +14,7 @@ class MyCellEditor(wxPyGridCellEditor):
 
     Notice that in order to call the base class version of these special
     methods we use the method name preceded by "base_".  This is because these
-    methods are "virtual" in C++ so if we try to call wxGridCellEditor.Create
+    methods are "virtual" in C++ so if we try to call wx.GridCellEditor.Create
     for example, then when the wxPython extension module tries to call
     ptr->Create(...) then it actually calls the derived class version which
     looks up the method in this class and calls it, causing a recursion loop.
@@ -23,18 +24,19 @@ class MyCellEditor(wxPyGridCellEditor):
     def __init__(self, log):
         self.log = log
         self.log.write("MyCellEditor ctor\n")
-        wxPyGridCellEditor.__init__(self)
+        gridlib.PyGridCellEditor.__init__(self)
 
 
     def Create(self, parent, id, evtHandler):
         """
-        Called to create the control, which must derive from wxControl.
+        Called to create the control, which must derive from wx.Control.
         *Must Override*
         """
         self.log.write("MyCellEditor: Create\n")
-        self._tc = wxTextCtrl(parent, id, "")
+        self._tc = wx.TextCtrl(parent, id, "")
         self._tc.SetInsertionPoint(0)
         self.SetControl(self._tc)
+
         if evtHandler:
             self._tc.PushEventHandler(evtHandler)
 
@@ -46,7 +48,8 @@ class MyCellEditor(wxPyGridCellEditor):
         PaintBackground and do something meaningful there.
         """
         self.log.write("MyCellEditor: SetSize %s\n" % rect)
-        self._tc.SetDimensions(rect.x, rect.y, rect.width+2, rect.height+2)
+        self._tc.SetDimensions(rect.x, rect.y, rect.width+2, rect.height+2,
+                               wx.SIZE_ALLOW_MINUS_ONE)
 
 
     def Show(self, show, attr):
@@ -86,16 +89,17 @@ class MyCellEditor(wxPyGridCellEditor):
 
     def EndEdit(self, row, col, grid):
         """
-        Complete the editing of the current cell. Returns true if the value
+        Complete the editing of the current cell. Returns True if the value
         has changed.  If necessary, the control may be destroyed.
         *Must Override*
         """
         self.log.write("MyCellEditor: EndEdit (%d,%d)\n" % (row, col))
-        changed = false
+        changed = False
 
         val = self._tc.GetValue()
+        
         if val != self.startValue:
-            changed = true
+            changed = True
             grid.GetTable().SetValue(row, col, val) # update the table
 
         self.startValue = ''
@@ -115,7 +119,7 @@ class MyCellEditor(wxPyGridCellEditor):
 
     def IsAcceptedKey(self, evt):
         """
-        Return TRUE to allow the given key to start editing: the base class
+        Return True to allow the given key to start editing: the base class
         version only checks that the event has no modifiers.  F2 is special
         and will always start the editor.
         """
@@ -125,7 +129,7 @@ class MyCellEditor(wxPyGridCellEditor):
         ##return self.base_IsAcceptedKey(evt)
 
         return (not (evt.ControlDown() or evt.AltDown()) and
-                evt.GetKeyCode() != WXK_SHIFT)
+                evt.GetKeyCode() != wx.WXK_SHIFT)
 
 
     def StartingKey(self, evt):
@@ -136,19 +140,23 @@ class MyCellEditor(wxPyGridCellEditor):
         self.log.write("MyCellEditor: StartingKey %d\n" % evt.GetKeyCode())
         key = evt.GetKeyCode()
         ch = None
-        if key in [WXK_NUMPAD0, WXK_NUMPAD1, WXK_NUMPAD2, WXK_NUMPAD3, WXK_NUMPAD4,
-                   WXK_NUMPAD5, WXK_NUMPAD6, WXK_NUMPAD7, WXK_NUMPAD8, WXK_NUMPAD9]:
-            ch = ch = chr(ord('0') + key - WXK_NUMPAD0)
+        if key in [ wx.WXK_NUMPAD0, wx.WXK_NUMPAD1, wx.WXK_NUMPAD2, wx.WXK_NUMPAD3, 
+                    wx.WXK_NUMPAD4, wx.WXK_NUMPAD5, wx.WXK_NUMPAD6, wx.WXK_NUMPAD7, 
+                    wx.WXK_NUMPAD8, wx.WXK_NUMPAD9
+                    ]:
+
+            ch = ch = chr(ord('0') + key - wx.WXK_NUMPAD0)
 
         elif key < 256 and key >= 0 and chr(key) in string.printable:
             ch = chr(key)
             if not evt.ShiftDown():
-                ch = string.lower(ch)
+                ch = ch.lower()
 
         if ch is not None:
             # For this example, replace the text.  Normally we would append it.
             #self._tc.AppendText(ch)
             self._tc.SetValue(ch)
+            self._tc.SetInsertionPointEnd()
         else:
             evt.Skip()
 
@@ -178,9 +186,9 @@ class MyCellEditor(wxPyGridCellEditor):
 
 
 #---------------------------------------------------------------------------
-class GridEditorTest(wxGrid):
+class GridEditorTest(gridlib.Grid):
     def __init__(self, parent, log):
-        wxGrid.__init__(self, parent, -1)
+        gridlib.Grid.__init__(self, parent, -1)
         self.log = log
 
         self.CreateGrid(10, 3)
@@ -193,16 +201,17 @@ class GridEditorTest(wxGrid):
         #self.SetDefaultEditor(MyCellEditor(self.log))
 
         # Or we could just do it like this:
-        #self.RegisterDataType(wxGRID_VALUE_STRING,
-        #                      wxGridCellStringRenderer(),
+        #self.RegisterDataType(wx.GRID_VALUE_STRING,
+        #                      wx.GridCellStringRenderer(),
         #                      MyCellEditor(self.log))
+        #                       )
 
         # but for this example, we'll just set the custom editor on one cell
         self.SetCellEditor(1, 0, MyCellEditor(self.log))
         self.SetCellValue(1, 0, "Try to edit this box")
 
         # and on a column
-        attr = wxGridCellAttr()
+        attr = gridlib.GridCellAttr()
         attr.SetEditor(MyCellEditor(self.log))
         self.SetColAttr(2, attr)
         self.SetCellValue(1, 2, "or any in this column")
@@ -211,11 +220,12 @@ class GridEditorTest(wxGrid):
         self.SetColSize(1, 150)
         self.SetColSize(2, 150)
 
+
 #---------------------------------------------------------------------------
 
-class TestFrame(wxFrame):
+class TestFrame(wx.Frame):
     def __init__(self, parent, log):
-        wxFrame.__init__(self, parent, -1, "Custom Grid Cell Editor Test",
+        wx.Frame.__init__(self, parent, -1, "Custom Grid Cell Editor Test",
                          size=(640,480))
         grid = GridEditorTest(self, log)
 
@@ -223,9 +233,9 @@ class TestFrame(wxFrame):
 
 if __name__ == '__main__':
     import sys
-    app = wxPySimpleApp()
+    app = wx.PySimpleApp()
     frame = TestFrame(None, sys.stdout)
-    frame.Show(true)
+    frame.Show(True)
     app.MainLoop()