]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/GridCustEditor.py
Script updates
[wxWidgets.git] / wxPython / demo / GridCustEditor.py
index f90ea1f2f5ced8a9bc0977bd3fa68e1d36c143da..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
     """
     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
 
     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.
     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")
     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):
         """
 
 
     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")
         *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)
         self._tc.SetInsertionPoint(0)
         self.SetControl(self._tc)
+
         if evtHandler:
             self._tc.PushEventHandler(evtHandler)
 
         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)
         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):
 
 
     def Show(self, show, attr):
@@ -86,16 +89,17 @@ class MyCellEditor(wxPyGridCellEditor):
 
     def EndEdit(self, row, col, grid):
         """
 
     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))
         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()
 
         val = self._tc.GetValue()
+        
         if val != self.startValue:
         if val != self.startValue:
-            changed = true
+            changed = True
             grid.GetTable().SetValue(row, col, val) # update the table
 
         self.startValue = ''
             grid.GetTable().SetValue(row, col, val) # update the table
 
         self.startValue = ''
@@ -115,7 +119,7 @@ class MyCellEditor(wxPyGridCellEditor):
 
     def IsAcceptedKey(self, evt):
         """
 
     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.
         """
         version only checks that the event has no modifiers.  F2 is special
         and will always start the editor.
         """
@@ -124,7 +128,8 @@ class MyCellEditor(wxPyGridCellEditor):
         ## Oops, there's a bug here, we'll have to do it ourself..
         ##return self.base_IsAcceptedKey(evt)
 
         ## Oops, there's a bug here, we'll have to do it ourself..
         ##return self.base_IsAcceptedKey(evt)
 
-        return not evt.HasModifiers() and evt.GetKeyCode() != WXK_SHIFT
+        return (not (evt.ControlDown() or evt.AltDown()) and
+                evt.GetKeyCode() != wx.WXK_SHIFT)
 
 
     def StartingKey(self, evt):
 
 
     def StartingKey(self, evt):
@@ -135,19 +140,23 @@ class MyCellEditor(wxPyGridCellEditor):
         self.log.write("MyCellEditor: StartingKey %d\n" % evt.GetKeyCode())
         key = evt.GetKeyCode()
         ch = None
         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():
 
         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)
 
         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()
 
         else:
             evt.Skip()
 
@@ -177,9 +186,9 @@ class MyCellEditor(wxPyGridCellEditor):
 
 
 #---------------------------------------------------------------------------
 
 
 #---------------------------------------------------------------------------
-class GridEditorTest(wxGrid):
+class GridEditorTest(gridlib.Grid):
     def __init__(self, parent, log):
     def __init__(self, parent, log):
-        wxGrid.__init__(self, parent, -1)
+        gridlib.Grid.__init__(self, parent, -1)
         self.log = log
 
         self.CreateGrid(10, 3)
         self.log = log
 
         self.CreateGrid(10, 3)
@@ -192,16 +201,17 @@ class GridEditorTest(wxGrid):
         #self.SetDefaultEditor(MyCellEditor(self.log))
 
         # Or we could just do it like this:
         #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))
         #                      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
 
         # 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")
         attr.SetEditor(MyCellEditor(self.log))
         self.SetColAttr(2, attr)
         self.SetCellValue(1, 2, "or any in this column")
@@ -210,11 +220,12 @@ class GridEditorTest(wxGrid):
         self.SetColSize(1, 150)
         self.SetColSize(2, 150)
 
         self.SetColSize(1, 150)
         self.SetColSize(2, 150)
 
+
 #---------------------------------------------------------------------------
 
 #---------------------------------------------------------------------------
 
-class TestFrame(wxFrame):
+class TestFrame(wx.Frame):
     def __init__(self, parent, log):
     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)
 
                          size=(640,480))
         grid = GridEditorTest(self, log)
 
@@ -222,9 +233,9 @@ class TestFrame(wxFrame):
 
 if __name__ == '__main__':
     import sys
 
 if __name__ == '__main__':
     import sys
-    app = wxPySimpleApp()
+    app = wx.PySimpleApp()
     frame = TestFrame(None, sys.stdout)
     frame = TestFrame(None, sys.stdout)
-    frame.Show(true)
+    frame.Show(True)
     app.MainLoop()
 
 
     app.MainLoop()