]> git.saurik.com Git - wxWidgets.git/commitdiff
Added SplitTree sample to the demo
authorRobin Dunn <robin@alldunn.com>
Mon, 3 Dec 2001 20:41:03 +0000 (20:41 +0000)
committerRobin Dunn <robin@alldunn.com>
Mon, 3 Dec 2001 20:41:03 +0000 (20:41 +0000)
Fixes for wxEditor and its FrogEdit sample

Misc. other stuff

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12844 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

29 files changed:
wxPython/CHANGES.txt
wxPython/contrib/ogl/oglbasic.cpp
wxPython/contrib/ogl/oglbasic.py
wxPython/demo/Main.py
wxPython/demo/SplitTree.py
wxPython/demo/bmp_source/file1.bmp [new file with mode: 0644]
wxPython/demo/bmp_source/file1.ico [deleted file]
wxPython/demo/bmp_source/file2.bmp [new file with mode: 0644]
wxPython/demo/bmp_source/folder1.bmp [new file with mode: 0644]
wxPython/demo/bmp_source/folder1.ico [deleted file]
wxPython/demo/bmp_source/folder2.bmp [new file with mode: 0644]
wxPython/demo/bmp_source/folder2.ico [deleted file]
wxPython/demo/bmp_source/folder3.bmp [new file with mode: 0644]
wxPython/demo/encode_bitmaps.py
wxPython/demo/images.py
wxPython/demo/wxEditor.py
wxPython/samples/frogedit/FrogEdit.py
wxPython/setup.py
wxPython/src/.cvsignore
wxPython/src/__version__.py
wxPython/src/_defs.i
wxPython/src/controls2.i
wxPython/src/msw/controls2.py
wxPython/src/msw/windows.cpp
wxPython/src/msw/windows.py
wxPython/src/msw/wx.cpp
wxPython/src/msw/wx.py
wxPython/src/windows.i
wxPython/wxPython/lib/editor/editor.py

index 87dffdbac093dd96c188af1afb65c18dde348872..c3afe48498b8837dc518ce1c95658ce0fc9ea694 100644 (file)
@@ -95,7 +95,15 @@ same document.
 
 Added wxEditableListBox gizmo.
 
 
 Added wxEditableListBox gizmo.
 
-Added a greatly enhanced wxEditor from Steve Howell and Adam Feuer.
+Updated wxEditor with lots of enhancements from Steve Howell and Adam
+Feuer.
+
+Added the "SplitTree gizmos" which are a collection of classes that
+were designed to operate together and provide a tree control with
+additional columns for each item.  The classes are
+wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
+wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
+also be useful by themselves.
 
 
 
 
 
 
index 24965a42aeb60c1b8e5a43cbc9629aeff5a0572b..e7b77d1fa0eb35f0267d5ed919cbc837cb2528ac 100644 (file)
@@ -4355,81 +4355,6 @@ static PyObject *_wrap_wxPyShape_SetBrush(PyObject *self, PyObject *args, PyObje
     return _resultobj;
 }
 
     return _resultobj;
 }
 
-static void  wxPyShape_SetClientData(wxPyShape *self,PyObject * userData) {
-            wxPyUserData* data = NULL;
-            if (userData)
-                data = new wxPyUserData(userData);
-            self->SetClientData(data);
-        }
-static PyObject *_wrap_wxPyShape_SetClientData(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    wxPyShape * _arg0;
-    PyObject * _arg1;
-    PyObject * _argo0 = 0;
-    PyObject * _obj1 = 0;
-    char *_kwnames[] = { "self","userData", NULL };
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyShape_SetClientData",_kwnames,&_argo0,&_obj1)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyShape_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyShape_SetClientData. Expected _wxPyShape_p.");
-        return NULL;
-        }
-    }
-{
-  _arg1 = _obj1;
-}
-{
-    wxPy_BEGIN_ALLOW_THREADS;
-        wxPyShape_SetClientData(_arg0,_arg1);
-
-    wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
-    return _resultobj;
-}
-
-static PyObject * wxPyShape_GetClientData(wxPyShape *self) {
-            wxPyUserData* data = (wxPyUserData*)self->GetClientData();
-            if (data) {
-                Py_INCREF(data->m_obj);
-                return data->m_obj;
-            } else {
-                Py_INCREF(Py_None);
-                return Py_None;
-            }
-        }
-static PyObject *_wrap_wxPyShape_GetClientData(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    PyObject * _result;
-    wxPyShape * _arg0;
-    PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyShape_GetClientData",_kwnames,&_argo0)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyShape_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyShape_GetClientData. Expected _wxPyShape_p.");
-        return NULL;
-        }
-    }
-{
-    wxPy_BEGIN_ALLOW_THREADS;
-        _result = (PyObject *)wxPyShape_GetClientData(_arg0);
-
-    wxPy_END_ALLOW_THREADS;
-}{
-  _resultobj = _result;
-}
-    return _resultobj;
-}
-
 #define wxPyShape_Show(_swigobj,_swigarg0)  (_swigobj->Show(_swigarg0))
 static PyObject *_wrap_wxPyShape_Show(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
 #define wxPyShape_Show(_swigobj,_swigarg0)  (_swigobj->Show(_swigarg0))
 static PyObject *_wrap_wxPyShape_Show(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -8280,8 +8205,6 @@ static PyMethodDef oglbasiccMethods[] = {
         { "wxPyShape_Move", (PyCFunction) _wrap_wxPyShape_Move, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_IsShown", (PyCFunction) _wrap_wxPyShape_IsShown, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_Show", (PyCFunction) _wrap_wxPyShape_Show, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_Move", (PyCFunction) _wrap_wxPyShape_Move, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_IsShown", (PyCFunction) _wrap_wxPyShape_IsShown, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_Show", (PyCFunction) _wrap_wxPyShape_Show, METH_VARARGS | METH_KEYWORDS },
-        { "wxPyShape_GetClientData", (PyCFunction) _wrap_wxPyShape_GetClientData, METH_VARARGS | METH_KEYWORDS },
-        { "wxPyShape_SetClientData", (PyCFunction) _wrap_wxPyShape_SetClientData, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_SetBrush", (PyCFunction) _wrap_wxPyShape_SetBrush, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_SetPen", (PyCFunction) _wrap_wxPyShape_SetPen, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_GetId", (PyCFunction) _wrap_wxPyShape_GetId, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_SetBrush", (PyCFunction) _wrap_wxPyShape_SetBrush, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_SetPen", (PyCFunction) _wrap_wxPyShape_SetPen, METH_VARARGS | METH_KEYWORDS },
         { "wxPyShape_GetId", (PyCFunction) _wrap_wxPyShape_GetId, METH_VARARGS | METH_KEYWORDS },
index 7e23386ead90ce29f1dfc6c12e48befa33533624..86ae9a5d8567690a07d90478db166d88a8f6d5f8 100644 (file)
@@ -451,12 +451,6 @@ class wxPyShapePtr(wxPyShapeEvtHandlerPtr):
     def SetBrush(self, *_args, **_kwargs):
         val = apply(oglbasicc.wxPyShape_SetBrush,(self,) + _args, _kwargs)
         return val
     def SetBrush(self, *_args, **_kwargs):
         val = apply(oglbasicc.wxPyShape_SetBrush,(self,) + _args, _kwargs)
         return val
-    def SetClientData(self, *_args, **_kwargs):
-        val = apply(oglbasicc.wxPyShape_SetClientData,(self,) + _args, _kwargs)
-        return val
-    def GetClientData(self, *_args, **_kwargs):
-        val = apply(oglbasicc.wxPyShape_GetClientData,(self,) + _args, _kwargs)
-        return val
     def Show(self, *_args, **_kwargs):
         val = apply(oglbasicc.wxPyShape_Show,(self,) + _args, _kwargs)
         return val
     def Show(self, *_args, **_kwargs):
         val = apply(oglbasicc.wxPyShape_Show,(self,) + _args, _kwargs)
         return val
@@ -781,6 +775,15 @@ class wxPyShapePtr(wxPyShapeEvtHandlerPtr):
         return val
     def __repr__(self):
         return "<C wxPyShape instance at %s>" % (self.this,)
         return val
     def __repr__(self):
         return "<C wxPyShape instance at %s>" % (self.this,)
+    
+    def SetClientData(self, data):
+        self.clientData = data
+    def GetClientData(self):
+        if hasattr(self, 'clientData'):
+            return self.clientData
+        else:
+            return None
+
 class wxPyShape(wxPyShapePtr):
     def __init__(self,this):
         self.this = this
 class wxPyShape(wxPyShapePtr):
     def __init__(self,this):
         self.this = this
index a3b065e521369e4d60fa276792636d3146bc1090..3d72ac519f4d3fc17046bc049adc32f7926ea539 100644 (file)
@@ -38,6 +38,7 @@ _treeList = [
                                 'wxPopupWindow',
                                 'wxDynamicSashWindow',
                                 'wxEditableListBox',
                                 'wxPopupWindow',
                                 'wxDynamicSashWindow',
                                 'wxEditableListBox',
+                                'SplitTree',
                                 ]),
 
     ('Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame',
                                 ]),
 
     ('Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame',
@@ -74,6 +75,7 @@ _treeList = [
                         'ActiveXWrapper_Acrobat', 'ActiveXWrapper_IE',
                         'wxDragImage', "wxProcess", "FancyText", "OOR", "wxWave",
                         'wxJoystick', 'DrawXXXList', 'ErrorDialogs', 'wxMimeTypesManager',
                         'ActiveXWrapper_Acrobat', 'ActiveXWrapper_IE',
                         'wxDragImage', "wxProcess", "FancyText", "OOR", "wxWave",
                         'wxJoystick', 'DrawXXXList', 'ErrorDialogs', 'wxMimeTypesManager',
+                        'SplitTree',
                         ]),
 
     ('wxPython Library', ['Layoutf', 'wxScrolledMessageDialog',
                         ]),
 
     ('wxPython Library', ['Layoutf', 'wxScrolledMessageDialog',
index b87f9912a525d4c7c9e91ecc2617274b6af3354c..5de68027e432f2386f7abfc8abaa882587b9e06d 100644 (file)
@@ -10,29 +10,62 @@ class TestTree(wxRemotelyScrolledTreeCtrl):
                  style=wxTR_HAS_BUTTONS):
         wxRemotelyScrolledTreeCtrl.__init__(self, parent, ID, pos, size, style)
         ##self.SetBackgroundColour("LIGHT BLUE")
                  style=wxTR_HAS_BUTTONS):
         wxRemotelyScrolledTreeCtrl.__init__(self, parent, ID, pos, size, style)
         ##self.SetBackgroundColour("LIGHT BLUE")
+        EVT_PAINT(self, self.OnPaint)
 
         # make an image list
         im1 = im2 = -1
 
         # make an image list
         im1 = im2 = -1
-        ##self.il = wxImageList(16, 16)
-        ##im1 = self.il.Add(images.getFolder1Bitmap())
-        ##im2 = self.il.Add(images.getFile1Bitmap())
-        ##self.SetImageList(self.il)
+        self.il = wxImageList(16, 16)
+        im1 = self.il.Add(images.getFolder1Bitmap())
+        im2 = self.il.Add(images.getFile1Bitmap())
+        self.SetImageList(self.il)
 
         # Add some items
         root = self.AddRoot("Root")
         for i in range(30):
             item = self.AppendItem(root, "Item %d" % i, im1)
             for j in range(10):
 
         # Add some items
         root = self.AddRoot("Root")
         for i in range(30):
             item = self.AppendItem(root, "Item %d" % i, im1)
             for j in range(10):
-                self.AppendItem(item, "Child %d" % j, im2)
+                child = self.AppendItem(item, "Child %d" % j, im2)
 
         self.Expand(root)
 
 
         self.Expand(root)
 
+    def OnPaint(self, evt):
+        dc = wxPaintDC(self)
+
+        self.base_OnPaint(evt)
+
+        # Reset the device origin since it may have been set
+        dc.SetDeviceOrigin(0, 0)
+
+        pen = wxPen(wxSystemSettings_GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID)
+        dc.SetPen(pen)
+        dc.SetBrush(wxTRANSPARENT_BRUSH)
+
+        clientSize = self.GetClientSize()
+        cy = 0
+        h = self.GetFirstVisibleItem()
+        while h.Ok():
+            rect = self.GetBoundingRect(h)
+            if rect is not None:
+                cy = rect.GetTop()
+                dc.DrawLine(0, cy, clientSize.x, cy)
+                lastH = h
+            h = self.GetNextVisible(h)
+
+        rect = self.GetBoundingRect(lastH)
+        if rect is not None:
+            cy = rect.GetBottom()
+            dc.DrawLine(0, cy, clientSize.x, cy)
+
 
 
 class TestValueWindow(wxTreeCompanionWindow):
     def __init__(self, parent, ID, pos=wxDefaultPosition, size=wxDefaultSize, style=0):
         wxTreeCompanionWindow.__init__(self, parent, ID, pos, size, style)
         self.SetBackgroundColour("WHITE")
 
 
 class TestValueWindow(wxTreeCompanionWindow):
     def __init__(self, parent, ID, pos=wxDefaultPosition, size=wxDefaultSize, style=0):
         wxTreeCompanionWindow.__init__(self, parent, ID, pos, size, style)
         self.SetBackgroundColour("WHITE")
+        EVT_ERASE_BACKGROUND(self, self.OEB)
+
+    def OEB(self, evt):
+        pass
 
     # This method is called to draw each item in the value window
     def DrawItem(self, dc, itemId, rect):
 
     # This method is called to draw each item in the value window
     def DrawItem(self, dc, itemId, rect):
@@ -44,6 +77,10 @@ class TestValueWindow(wxTreeCompanionWindow):
                 ptext = tree.GetItemText(parent)
                 text = text + ptext + " --> "
             text = text + tree.GetItemText(itemId)
                 ptext = tree.GetItemText(parent)
                 text = text + ptext + " --> "
             text = text + tree.GetItemText(itemId)
+            pen = wxPen(wxSystemSettings_GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID)
+            dc.SetPen(pen)
+            dc.SetBrush(wxBrush(self.GetBackgroundColour(), wxSOLID))
+            dc.DrawRectangle(rect.x, rect.y, rect.width+1, rect.height)
             dc.SetTextForeground("BLACK")
             dc.SetBackgroundMode(wxTRANSPARENT)
             tw, th = dc.GetTextExtent(text)
             dc.SetTextForeground("BLACK")
             dc.SetBackgroundMode(wxTRANSPARENT)
             tw, th = dc.GetTextExtent(text)
diff --git a/wxPython/demo/bmp_source/file1.bmp b/wxPython/demo/bmp_source/file1.bmp
new file mode 100644 (file)
index 0000000..9a0544b
Binary files /dev/null and b/wxPython/demo/bmp_source/file1.bmp differ
diff --git a/wxPython/demo/bmp_source/file1.ico b/wxPython/demo/bmp_source/file1.ico
deleted file mode 100644 (file)
index cc828ab..0000000
Binary files a/wxPython/demo/bmp_source/file1.ico and /dev/null differ
diff --git a/wxPython/demo/bmp_source/file2.bmp b/wxPython/demo/bmp_source/file2.bmp
new file mode 100644 (file)
index 0000000..e812d69
Binary files /dev/null and b/wxPython/demo/bmp_source/file2.bmp differ
diff --git a/wxPython/demo/bmp_source/folder1.bmp b/wxPython/demo/bmp_source/folder1.bmp
new file mode 100644 (file)
index 0000000..dada286
Binary files /dev/null and b/wxPython/demo/bmp_source/folder1.bmp differ
diff --git a/wxPython/demo/bmp_source/folder1.ico b/wxPython/demo/bmp_source/folder1.ico
deleted file mode 100644 (file)
index c43de1c..0000000
Binary files a/wxPython/demo/bmp_source/folder1.ico and /dev/null differ
diff --git a/wxPython/demo/bmp_source/folder2.bmp b/wxPython/demo/bmp_source/folder2.bmp
new file mode 100644 (file)
index 0000000..35fedba
Binary files /dev/null and b/wxPython/demo/bmp_source/folder2.bmp differ
diff --git a/wxPython/demo/bmp_source/folder2.ico b/wxPython/demo/bmp_source/folder2.ico
deleted file mode 100644 (file)
index 98b6d3f..0000000
Binary files a/wxPython/demo/bmp_source/folder2.ico and /dev/null differ
diff --git a/wxPython/demo/bmp_source/folder3.bmp b/wxPython/demo/bmp_source/folder3.bmp
new file mode 100644 (file)
index 0000000..dfc3c4f
Binary files /dev/null and b/wxPython/demo/bmp_source/folder3.bmp differ
index 65d89dc118e80d39789fba7d5784394d52388342..31e09bb9a24f40533e26126b67468a5390d95f85 100644 (file)
@@ -51,9 +51,11 @@ command_lines = [
     "-a -n SmallUpArrow  -m #0000FF bmp_source/sm_up.bmp images.py",
     "-a -n SmallDnArrow  -m #0000FF bmp_source/sm_down.bmp images.py",
 
     "-a -n SmallUpArrow  -m #0000FF bmp_source/sm_up.bmp images.py",
     "-a -n SmallDnArrow  -m #0000FF bmp_source/sm_down.bmp images.py",
 
-    "-a -n Folder1 bmp_source/folder1.ico images.py",
-    "-a -n Folder2 bmp_source/folder2.ico images.py",
-    "-a -n File1   bmp_source/file1.ico   images.py",
+    "-a -n Folder1 -m #FFFFFF bmp_source/folder1.bmp images.py",
+    "-a -n Folder2 -m #FFFFFF bmp_source/folder2.bmp images.py",
+    "-a -n Folder3 -m #FFFFFF bmp_source/folder3.bmp images.py",
+    "-a -n File1   -m #FFFFFF bmp_source/file1.bmp   images.py",
+    "-a -n File2   -m #FFFFFF bmp_source/file2.bmp   images.py",
 
     ]
 
 
     ]
 
index 90d2a5750d845fcac38e605d1113d75c85b07905..9aaa3c3392c7d9bb4c9a563a045675128575a130 100644 (file)
@@ -1937,8 +1937,11 @@ def getSmallDnArrowImage():
 #----------------------------------------------------------------------
 def getFolder1Data():
     return cPickle.loads(zlib.decompress(
 #----------------------------------------------------------------------
 def getFolder1Data():
     return cPickle.loads(zlib.decompress(
-'x\xda\xd3\xc8)0\xe4\nV76R\x00"C\x05Cu\xae\xc4`u\x05\x85d\x05\xbf\xfc\xbcT(\
-\x07?\x18U4\xaahT\xd1\xa8\xa2\x81Q\xa4\x07\x00jB\xa8\xe5' ))
+'x\xda\xd3\xc8)0\xe4\nV74S\x00"S\x05Cu\xae\xc4`u\x7f\x85d\x05\xa7\x9c\xc4\
+\xe4l0/\x1f\xc8Sv6\x00A0_\x0f\xc4\xb70\x00A0_\x01\xc8\xf7\xcb\xcfK\x05s"@\
+\x92n@`\x00\x93D\x050A=\x10@\x13\xd4\x8b\xc8\x07B=\x14A\x88\x18P\x14\xa2\x01\
+*\x88l\xa2\x9e?L\x10\xaa\x14\xac\x1c.\x88\x10\xcb\xa7\xbfJ\x14\x00\x15T\xf0G\
+\x01xC\t]P\x0f\x00\xbc\x8fdr' ))
 
 def getFolder1Bitmap():
     return wxBitmapFromXPMData(getFolder1Data())
 
 def getFolder1Bitmap():
     return wxBitmapFromXPMData(getFolder1Data())
@@ -1949,129 +1952,11 @@ def getFolder1Image():
 #----------------------------------------------------------------------
 def getFolder2Data():
     return cPickle.loads(zlib.decompress(
 #----------------------------------------------------------------------
 def getFolder2Data():
     return cPickle.loads(zlib.decompress(
-'x\xda\xcdYkS\x14K\x12\xfd~\x7fE"o\xd0\xb4g\xbagz\xda\x07A?UDFD1\xd5\x10AT@\
-\xc1\xc27\xa0\xf2\xdb\xb7\xbaNV\xb5z\x8d\x8dkll\xecN\xfa\xc5cUV\xe6\xc9Ge\
-\xb5s\x87\xc7\xbd\xbf6f\xe3>\xb5\x7f\xd2\x01\xf5g\xff\xda\xd9\x98]\x1e\xd3.\
-\x15\x87;\xbbo\xdc_\xaf\x91\xfd\xebd3l\x86y\xee\x80+\xdc\x02uY\x97\x83\xd2\
-\x01\xcf\x1d\xd0\xe4M\x1e%\x0eX1-P\xf6\xca^6t\xc0e\xa7\xa3\xca\xaa,\x8b\x1dp\
-\xe2\xb6\x14eQ\xa6\xd8r\xcf\x01\xa3\xd2\n\xb6<\x0b\xc7\x16\x99\x03\xee8\xa5y\
-\xd6\x8a\x03f\x1cP\xa7u\x9a@\xe9\x14\x07\x00J\'\xc5mI\xf2d\x84-\xb7\x1cP%U\
-\x92\xc2\xf4\x1b\x14\x80\xca\x01\x8b\xad\xf3\x93\xf1\xa0\x15\x07\xbc7aE\xed\
-\x80\x03\xf1\xee\xa7#\xb8\x1f,-q\xca\xa1xo\xf3\xc6\x01\xc3@P\xbfp\xc0;\xf6J3\
-pn\x82\xa59L_w\xc7fM\xd6\x8c"\x07\xec\xb8-e^\xda%\x0ex\xe1V\x0c\xf3V\xc0X\
-\xb7E\x95:_\x92\xf6\x188\xf7\x02\xac\xa7E:\x82sO\xe0K\xbf\xee\x0fz\x0exC\x01\
-\x80\x8e\xefp\xae\xd7\xf4J\x98>\xd7m\x01\xeb\xd3\xe2\xddo\x10\xb9\x8d\xe0~\
-\x05>\x9e\xb17,\x03\x1f\xe2\x0c\x1b\x0eZq@\x0e\x92\xed/\x81\xb7\xe4V\xe4U^\r\
-\x00\xc4\xe2\xed\xa8a\xe9\x18\x9c\x0e\x9aA\x0c\xf7\x93n\x05L\xff\n>l\xbe\x8c\
-\x109vJ\xb3A6\x18"rK\xe4C\xa9\x91\xcb\x1cP6e\xa39\xf6\x88\xc3\x16$\x8c\x84\
-\x0c\xaa\x10\xa8\xa6[\x01\x92_\x81\xe4~\xd1\xcf`\xe95\xf6J\x0bx\xbb\xe6\x80\
-\xb4j\xc5\x01\x1f\xc4\xfb2H\x1d\xb0\xe0\xec\x18F\xad\xa0&\xc5G\xdf\x17P\xb7\
-\x05\x86-9o\x07\xc5\xa0Hp\xca\x03p:\xaaFJ\xe1f\xb04s+.\xcc\xa2\xa2F\xf9h8\
-\xb8\xe0\x08\ny\x9a\x83\xc2\xe7nE\\\xb7\x82\x94\xeaV\xc0\xd2u(\x8d\xb2(E~\\t\
-[\xa2\xa4\x15\x07lS\xd8\x02\x1d\x93(\xd3\xa2.b\xe8\xb8I\x01@\\\xee\xa3\xb2\
-\x87\xf5\xb0\x87\x15\x13\xe4}I\xe1\xcb#\t\x00,\x1d\xa1\x1a\xb2a\xd6\x83\x1d\
-\x93\xc1}\xed0s!\xb5K(=r+\xd2\xb8\x15\x94\xa9xKKP\xd8\xeb\x00li\xc4[\xaa\xac\
-\xbf\x0b\xa7\x8c\x00D\xc1\xd2\x11b\xdb\x0f+4\x1d>\x91\x8f\\\x01\xd3\xc7\xe4\
-\xc3\x90\xc3\xfd\x8f\xc1}\xedc\x15\x05@\xeb\xb6\xd3\x01NW%\xac@\x11\n\xd2\
-\xa1\xd7\x8a\x03>\x07\x92\x95\xb1\x19\xf4\xa0\xb8\x8aST\xe5\x8e\xdb\xd2K[A\
-\x18\xc4\xaf\x18\x81\xa0\x1b\x1d\x00Ko\x85\xd86(\xc2O`\xacnj\xed\x0e\xafB\
-\xa0\n\x00Y(\xf5\n\x04\xdd\x80\xb7\xb6\xae\xb5\xe3\x9e\xa3^\xb22\xd3\xa4\xdb\
-\xc4u\x12\xb5\xe2\x80y\xb7"\x8f[\xc1\xed\xe1V\x14\xbd\xa2\xa7\x9d\xee\xb1;v4\
-l\x05m\x9c\xbc\xe9\x19L\x7f\x0bKmO\x8a\xb1\xe5\x8b\x032\xfb\x1b\xe0\xd83\xa7\
-\xb4I\x9a\xa4\x87\xd8^\r\x8c\xe9M8\x1d\xc2\xd0\xc0\xf4]\xf2\xbe\x0c\x00\x1cv\
-\x00\xec\x98\t\xf9Q\xc1\x8e\x03\xb8o)\x8b\x10\xa8\xd5`\xa9^|\xecV\x8cz\xad\
-\x80d\xf0a\xfb\x96\xa6\xd4E\xf8\x125Q\x8d\x84\x19u\x00\xecXb\xefK\x82\xe8\
-\xdf5\x9ed\xad\xdb2\x00z\xca!\xc2\x90\x94\xc9\x00+VQ\xeaI\x96\x0cA\xd0\xed\
-\x0e@\x06=&oX\x01\x1d7\xc2\x8a\x14\xc0C\xe4i^\xfbQ\xe1=\xfb\xc8\xe9\xa8`\x9c\
-\x0eG)\x94\xce\x87\xc4\xad\xc0\xfa5gi\xd2o\xc5\x01\xaf\xc1XY\x95C$\xeei\xc8B\
-\xbd\x80?\x92\'Y+\xea3Bi;p\x82\xd8\x0e\xc8\xbb\xaf\xb1]\x08:J\x9c\xf2N<\x1fz\
-\xbd\x1e\xbb-\xa9\xfb\xa1LMX\x01\xa5c\xe3sL\x95\xde\xc7\x94\xd3\x8c\x1a\x1d&\
-\xaa\x0e\x80\xa5w\x03\xa0\xf7\xfe\x94\xf1\x8c\xc5\x08\xc3\n\x05\x00\xa7\x1c\
-\x05\xd3\xf5\x16{\x1d*\xaa\x04\xeb3\xc1\x17\xbd\x1a\xcf\xc4\xf3\xa1\xb3CN\
-\x9e\x0f\xed\x85\x1f1\x90\xb47\x0eNILX\x01\n\xaf\xb3\xb7C\x9b\xd2\x8a\x84\
-\x15\x00\x96\x03\xc9)b{\x89|\x16f`\xecr\xe7-\xdc\x7f\x82t\xc8\x8b\\o\xc2\x03\
-\x90\xdco\xc5\x01{\xe2\x83\x9dCi?\x14\xb2\xba?\xe8\x0087\n\x8ciU\xee#\xb5\
-\xad\x12\xad\xfd\xab\xc10M\x18\x16O\xa1\x8e\x1b\x93h\xd2i+\x98\xa5\xc2\x96\
-\x02\x85\\\xe3X\xebJ\x0f\x91{\x8f\x1e\xe4\x1a;f\x18\xc4eP\x0f\x12l\xf9\x8c&\
-\x1d\xb5\x82;[\xc2\n\xf82\xec\xb6\xe4\xb8\xb3\xbb\x15\x85\xbb\xb3o#r\xfd\xaa\
-\xafi9\xcd\x01@(\x9f\x82\xe4\xc1h\x90\xc2\x8e\x13\xa4e\xdc\xc4\x11\xf8\xf8\
-\x1c"\xa7\xbedh\xb0\xfdV\x1c\xf0\r\r6*"m\xb0}\xf6\xde\xea%~\x19\xd3\x96\x1d\
-\xfaF\xc8\x8fO \xd9\x0e\xf4\tr}\xc2\x9d\xd2oo`\x00[\xdd\x16\xe8\x18\xb0wN\
-\xdb\xc51\xd2\xc1N5\x18\xe0/\xcc\x86B.\x1b\xe7\xfe\x1e\x80\xa8\x8e\x06\xba\
-\x02\xdeF\xad\xb8\x15G\x0e\x18\xc6\xad\xa0\x90\xc9\xbb\x1f\x83\xe4\xdbH\xed\
-\xa2\xf2\xa3\xd3\xa5P\x1e5\x0c[\x0c\x8c\xe9|\xfa\x14\xa3\x93MT\x1c;;\xd1\x01\
-\xa8\x97\xfb\xe4M\xd7\xa9\xaf\x1f\xb2\xb0\x84\xfb\x0f\xd0\x1c\xe3,\xd6\xd4\
-\xce;\x00\x96naPl\x07v\xd4\xfe)\xd2\xc1\xfe\xfa\xc8\xd3K\x01\x88a\xd8\x074\
-\xc7^+\xe8\xb8\xe4\x9d\xd3\xe6\xf84\xd8QA\xc7\xd5\xe0\xbe\x8e\xc5\'\xdd\x168\
-\xb7/\xde\xfd!\x94>\n:j\xa4Td|E\x95\xc8\x8f\xcb\xe2\rKp\xec\x1d\xf2\x19T\xc0\
-\xd2u\x94G2Jz8\xe5"\xf9\x94\xd2\xa4\xfb\x0eN\xed\x03G\xbb\xd4\x11\x94fu\xd6\
-\xc7)\x17\xd9[\x9aA\xe9\n\xa2_[\x81\xa57;\x00\x9c\xde\x0c:\xb4\x9fN\x91O:\
-\xbd+\x0fMX\x81S\x08\xc9\x9f\x15\x99f\xf2\x02\x87\x15\xa0\xf0\x1b\xfb\xe8\
-\xe7P\xfa"\xb8\xafwe)\xc1\x0e\x00_Qs\xc3j\xa8\xcd\xf1n\x07 \x0cw\x10}7\x90\
-\xe1q&\xde[\xbdNVaiR\'}\x00K\xa1\x07\x95\xc8\xc2\xac\x03\xe0\xcb\x15\xf8b\
-\xafSel\xdf\xf8\x02\xaa\x01\x9c\xa2n\xedO\xaf\xd7\x14q\xb1\x0f\x98\x18\x14\
-\xee!\xd8q+\x98\x93\x03\x1fCm\xf4\xec}\xd1F_ \x0cY+\xb8\xa3\xd8s\xaa/qb\x9fc\
-z\xdf.\x04\xe7\xf4\xc1\xbbN\x01\xc0\x96m\t\x008]F&\xf7\xaa\x9e6\x14\n\x8cU\
-\xfazE\xa0z\xad`\xa2\xc7\x96\xa6j4\x1d\xae\x86\\\xafp\xca7\x00\xfd\xa6\x1f\
-\x01H\xbb\x15\xe0t\x8c\xe7l\xda\nfK\xa7\xb4\xdf\xf6`\xacxI\xde\xb0\x0c\x96R\
-\x0b\xac\x99\xb7/\xe1\x08\x1a\xa1\xbd\xc0\x95\x9d{\xe4\xd3G_\xdd\x8f\xd1\x1a\
-\xd2,\xd5w\xe8\x94x\xfetJ\xcc\xc5\xeb\xc8\xb0b\x137g\x93\xfa\xd1"\x85\xab\
-\xf6Q\xad}\xafF\xaf\x18\xb4\x82\xb2\x06\xe5U]\xe9\x15V\x86c\xb5\xa9\xbf\r\
-\x86\xd5pd\x1e5j\x7f:5\xaf9;\xd2(\x8d\xfa\xfa\xe1\x02\x85\x9f\xb4\x82\nD\xfa\
-\xa4e\xaa\xb3yA\xfe\x14\xcd\x96\x1e\xf9|\xaa\x10%\x81/\xee\xfa\x85\xe90\xac\
-\x9f\xf5u\x1a\xd9t\xc7\x0e\xaaV\xf0\x15\x82\xbc/z\xdb\xc4\xec#\xad\xc7\xbeA.\
-\xd8\xb7K\x06\xa5o\x91\x936Y4\xf3\xcb\xce\x0ep\xba\x85\xd0[J\x95\x8f$\x14K\
-\x01\x92w;\xa5\x00&\x82\xa5z?\x9f\x91\x0f\xc3\x10\xb1\xfd\x16N\xa9\xb5\xedw+\
-p\xec\xeb\x90\x82\xfa\xbd\xe4\x99\x84\x15\xf0v\x17a\x88\xf2H3.\n\x86i\'\xd8\
-\x11\xef\xbe\xe6G\x1a\xbc\xd5\xa9\xe8K`L\x0b\xee\x0c\x8cEU\xa4/\xb3\x98\xbc\
-\xfb:\x04m \x94\xfd\xd2\x7f\xeb\xa8\x83\xe9#8\xf7\x15\xad\xa1m\xbfH\xbac\xbc\
-\xba\xeb\xb4\x8e\xb0\xe2\x16ZC\xfb \x02\xa7\x1b\x1d\x80c\xef`\xf2.\xcaBS\xea\
-\xa5\xf1J\xf5:\xbe-\x01\x00\xc9\xdb\x9d\x0e\xf01\x0f\xf7mzh\x06=\x17\xef\xad\
-^\xb6\x06\xc3\x98\xfb\xf4\x87A\xca\x84-\xb0\xf4z\x88~\xa9\xef\x1d\xd8\x11\
-\xd7\xb1\xde\xbe\x128U>\xd6B{\xd1\xcb\xf6\x15yK\xf5\xcbN\x14b\xab\xf7\xe2\
-\x93\x10J\xffu\x88\xbd\xfb\xfa\xb6\xbfe\xfc)\xda\xc4\x18\x9f\x8b\x8aV0\xbd\
-\xc3\x8eQ1\xd2k0\t\xb1\xd5\\\xaf\x82\xfb\x19\xb6|\xc7\x96\xb8\x88u\x809\'\
-\xef\x9c\x0e\xa7\xa7\x88~\xd1\x14:\x9c\xbe\t\xee\xeb7\x86\xeb\x1d\x8004\xe43\
-HG\xe0"\xf4 }\xcc-\x86\x1c\xd3\x84\x19\xe3\xa2\x8c\xad\xe0\xd8W\x81\x8f\x1c\
-\xc0q\x08e\x01\x82\xae\x05\n\x95\xe4s\x07$\xed\xbb\x13\x96\xee\x81\xc2a9T\
-\xc3\xae\x07\xc34\x93_v+\x00<D\xdd\x0e\xed\x95\x06\x1d\x1f\xc8\x9f\xd2@\xc7A\
-`Ls\xec^\xf8\x02\xd9\xd7\xefG\xa1\x9f\xea\xc8\xb7H>.:h/\xa3\xf5\xb9>\x0e;\
-\xd0>m+\xd4~Z`jv/ \xcc\t!\x94\xda.\x1et\x00\xec\x98\x0b_\xca5\xc7\xce;\x00[F\
-\xecOI\xe1\xdc\x95\x90\x96\x15r\xeck\x08\xb6\xce\x1a\xdf\xc3g\xef\x18e\xfa%|\
-\xc3\xd6\xcf4_LX\xa1\x0f1\xe3?\x04k\x97\xda\x0f\xff\r\xa0S\xd1\xd3\xf0\xa9X\
-\xbf\xeb\xad\xe1\x99\xe5&K46\xac\xb0\xbei\xae?\xc4]\xd9k\x05\x9c\x8awNs\xec\
-\x8ax\xd3KX:\x0c\x1f\xe8\xb3\xca\xdf\xbe\xff\xd1\xef\xbf\xa7\x84\xed\xc4\xf2\
-\xb3\x98?W2\xa6\xc5_d\xf9\xcf\x940M\xd2\x14M\xff"3V\xcd\xc2?W2\xa6\xebt\x89\
-\xae\xd2\x15Z\xa2\x8bt\x8dz\xd4\xa7\x98\x12\x1a\xfc\x1bk~R\x02+\x86\x94\xd2\
-\x882\x8a\xe8\x1d}\xa1\x97\xf4\x9e>\xd2)}r\xd6\x1c\xfcV~RrL;\xf4\x81^\xd0+\
-\xda\xa3}zMo\xe8\x90\xce\xe8\xc4&\xc4gzNo\xe9\x88\xee\xfc"kT\xd0\xe6\xef\x94\
-\x94\xf4\x98r\xda\xa0\x8a\x1a\xbaA7i\x85n\xd3*\xdd\xa5[\xf6\xdf\x1e\xfc"\x8f\
-\xe8\xbe*\xb9\xf0\xb3\x92{T\xd3CZ\xb7\xe7OX;\xce\xad=[t\x99\xe6h\x9e\x9e\xd1\
-6\xcd\xd2SzB_\xe9;\xd9\xa1\x80\x99\x857\xe9\xc2\xdf-1<\xe6uZ\xe4e\x9e\xe4)\
-\x9e\xe6\x19^\xe0\xeb|\x89\xaf\xf2\x15^\xe2\x8b|\x8d{\xdc\xe7\x98\x13\x1e\
-\xf0\x90S\xfe\xc5\x9d\x11g\x1c\xf1;\xfe\xc2/\xf9=\x7f\xe4S\xfe\xc4\x07|\xcc;\
-\xfc\x81_\xf0+\xde\xe3}~\xcdo\xf8\x90\xcf\xf8\x84w\xf93?\xe7\xb7?*9\xe2;\xbc\
-\xc6\x05or\xc9\x8f9\xe7\r\xae\xb8\xe1\x1b|\x93W\xf86\xaf\xf2]\xbe\xc5\x0f\
-\xf8\x11\xdf\xe7{\\\xf3C^\xe7\t>\xffA\x89\xe3d\x8b/\xf3\x1c\xcf\xff\x03y\xc6\
-\xdb<k\xe5)?\xe1\xaf\xfc]9Q%\xf6\xe9%\xfc\x0fD\xc4H\xabd,\x8b\xb2,\x93\xf2\
-\x03\xb1[<%\xd32#\x0br].\xc9U\xb9"KrQ\xaeIO\xfa\x12K"\x03\x19J*#\xc9$\x92w\
-\xf2E^\xca\x11\xbf\x97\x8f\xb2\xf9#\'Pr*\x9f\xe4@\x8eeG>\xc8\x0by%{\xb2/\xaf\
-\xe5\x8d\x1c\xca\x99\x9c\xc8\xae|\x96\xe7\xf2V\x8e\xe4\x8e\xacI!\x9bR\xcac\
-\xf9A\x89\xa1\\6\xa4\x92Sj\xe4\x86\xec\xd3MY\xa7\x19^\x91\xdb\xb2*w\xe5\x96<\
-\x90\x05~$\xf7\xe5\x9c\xeeI-\x0fe]&\xe4\\\xdap\xfc\x92l\xcb\xb6\xcc>\xd1\x96\
-\\\x969\x99\x97gv\xfb\xb6\xacHN\xb3V\xc5S\xab\xea\x89L\xf1\x19}\x95\xefb\x9f\
-7\x86\x8d\x98B\x8c\xf9m\xb2\x8d\xcd\xa2\xd9\x96e3i\xa6\xcc\xaa\xcc\xf0\xb4\
-\x991\x0b|W\xa6y\xc1L\xf2\x84M\xc3\xeb\xe6\x92\xb9j\xae\x98%s\xd1\\3\xbf\xad\
-\x9d\x9e\xe9\x9b\x13\x8a\xcd\x9c$f`\xd6i[&\xe8\x91\xb5bh\xceh\x99wiU\x1e\xd2\
-\xb4\xd9\xa3\xd4\x8c~\xa7\xe4\xc8\xe6@f2\x13\x99w\xe6\x8b\x89\xcd\xb2\x99\
-\x97)\xf3\xd2\xbc7\xd3\xfc\xd1Z\xb1\xcc\x8b\xb6 N\xcd>}\xb2\xd6\x1d\x98c\xb3\
-c>\x98\x17\xe6oM\xe9\x95\xd93\xfb\xe6\xb5Usbm\x98\xb3\x14\x0f\xcc\x1bsnKq\
-\xc2\x96\xe4\xba-\xcd\xc4Zqh\xce\xcc\x89\xd95\x9f\xcds\xf3\xf6\xefJ\x8e\xcc\
-\x1d\xb3f\n\xb3iJ\xf3\xd8\xe4f\xc3T\xa617\xccM\xb3bn\x9bUs\xd7\xdc2\x0f\xcc#\
-+\xf7\xcd=\xb3\xc5\xf6\x9d\xf5st\xa0\xe4\xa1U3i\x03\xben&\xcc\xb9\xd92\x97\
-\xcd\x9c\x997\xcf\xcc\xb6\x995O\xcd\x13\xf3\xd5|7\xdf\xac\xd0\x98\xc7k,c3\
-\xbe\xf0\xb7\x1e;>\xa0?\x95\xdf^\x19\x8b\xe3?\x93\xdf*Y\x1e\xff\x99\xfc\x9f\
-\xdf\xc5\xff+%\xfc/J\xa6~h' ))
+'x\xda\xd3\xc8)0\xe4\nV74S\x00"S\x05Cu\xae\xc4`u\x7f\x85d\x05\xa7\x9c\xc4\
+\xe4l0/\x1f\xc8Sv6\x00A0_\x0f\xc4\xb70\x00A0?\x02\xc4ws3\x00\x020_\x01\xc8\
+\xf7\xcb\xcfK\x85rP\x01LP\x0f\x04\xd0\x04\xf5"\xf2\x81P\x0fE\x10"\x06\x14\
+\x85h\x80\n"\x9b\xa8\xe7\x0f\x13\x84*\x05+\x87\x0b"\xc4\xf2\xe9\xaf\x12\x05@\
+\x05\x15\xfcQ\x00\xdePB\x17\xd4\x03\x00x\x93dF' ))
 
 def getFolder2Bitmap():
     return wxBitmapFromXPMData(getFolder2Data())
 
 def getFolder2Bitmap():
     return wxBitmapFromXPMData(getFolder2Data())
@@ -2079,11 +1964,28 @@ def getFolder2Bitmap():
 def getFolder2Image():
     return wxImageFromBitmap(getFolder2Bitmap())
 
 def getFolder2Image():
     return wxImageFromBitmap(getFolder2Bitmap())
 
+#----------------------------------------------------------------------
+def getFolder3Data():
+    return cPickle.loads(zlib.decompress(
+'x\xda\xd3\xc8)0\xe4\nV74S\x00"\x13\x05Cu\xae\xc4`u=\x85d\x05\xa7\x9c\xc4\
+\xe4l0/\x1f\xc8S\xb60\xb0000\x00\xf3\x15\x80|\xbf\xfc\xbcT0\'\x02$\xe9\x06\
+\x04pIT\x80GP\x0f\x040\x04#""\xf4\xa0\x00E\x10\n\x08\x0b\xea!\x00B0\x1f\x0e\
+\x10\x82z\x08A\x84vd\x85pw"+\x84\t\xa2(D\xf6\x11\xdc\xed\n\xa4\x06\x08\xa6\
+\xa0\x1e\x00\xc9\xbd[\x89' ))
+
+def getFolder3Bitmap():
+    return wxBitmapFromXPMData(getFolder3Data())
+
+def getFolder3Image():
+    return wxImageFromBitmap(getFolder3Bitmap())
+
 #----------------------------------------------------------------------
 def getFile1Data():
     return cPickle.loads(zlib.decompress(
 #----------------------------------------------------------------------
 def getFile1Data():
     return cPickle.loads(zlib.decompress(
-'x\xda\xd3\xc8)0\xe4\nV76R\x00"C\x05Cu\xae\xc4`u\x05\x85d\x05\xbf\xfc\xbcT(\
-\x07?\x18U4\xaahT\xd1\xa8\xa2\x81Q\xa4\x07\x00jB\xa8\xe5' ))
+'x\xda\xd3\xc8)0\xe4\nV74S\x00"#\x05Cu\xae\xc4`u=\x85d\x05\xa7\x9c\xc4\xe4l0\
+O\x01\xc8\xf3\xcb\xcfK\x85rP\x01TP\x0f\nP\x05!<\xa8(\\\x10\x04!\x04\xa6J\xb0\
+ZT\x95\n\x10iT\x95\xe8\x82\x088\x00*\x11\x00!\x885\x940\x04\xf5\x00\x08\x9a?\
+H' ))
 
 def getFile1Bitmap():
     return wxBitmapFromXPMData(getFile1Data())
 
 def getFile1Bitmap():
     return wxBitmapFromXPMData(getFile1Data())
@@ -2091,3 +1993,17 @@ def getFile1Bitmap():
 def getFile1Image():
     return wxImageFromBitmap(getFile1Bitmap())
 
 def getFile1Image():
     return wxImageFromBitmap(getFile1Bitmap())
 
+#----------------------------------------------------------------------
+def getFile2Data():
+    return cPickle.loads(zlib.decompress(
+'x\xda\xd3\xc8)0\xe4\nV74S\x00"c\x05Cu\xae\xc4`u=\x85d\x05\xa7\x9c\xc4\xe4l0\
+/\x02\xc8Svs3\x00\x020_\x01\xc8\xf7\xcb\xcfK\x85rP\x01TP\x0f\nP\x05#\xc0\x00\
+*\n\x17\x04\xc1\x08=\x05=l*\xc1jQU\x82\xc41T\xa2\x0b\xc2\xe1@\xa8D\x00\x84 \
+\xd6P\xc2\x10\xd4\x03\x00f\xa3R\xef' ))
+
+def getFile2Bitmap():
+    return wxBitmapFromXPMData(getFile2Data())
+
+def getFile2Image():
+    return wxImageFromBitmap(getFile2Bitmap())
+
index 756b46e3f736b8411182cbf2067cfeb31644ab79..d3bbd087857ac80a78625a7635a39a71c684b5d8 100644 (file)
@@ -8,7 +8,7 @@ def runTest(frame, nb, log):
     win = wxPanel(nb, -1)
     ed = wxEditor(win, -1, style=wxSUNKEN_BORDER)
     box = wxBoxSizer(wxVERTICAL)
     win = wxPanel(nb, -1)
     ed = wxEditor(win, -1, style=wxSUNKEN_BORDER)
     box = wxBoxSizer(wxVERTICAL)
-    box.Add(ed, 1, wxALL|wxGROW, 5)
+    box.Add(ed, 1, wxALL|wxGROW, 1)
     win.SetSizer(box)
     win.SetAutoLayout(true)
 
     win.SetSizer(box)
     win.SetAutoLayout(true)
 
@@ -38,7 +38,7 @@ def runTest(frame, nb, log):
 overview = """
 The wxEditor class implements a simple text editor using wxPython.  You
 can create a custom editor by subclassing wxEditor.  Even though much of
 overview = """
 The wxEditor class implements a simple text editor using wxPython.  You
 can create a custom editor by subclassing wxEditor.  Even though much of
-the editor is implemented in Python, it runs surprisingly smoothly on  
+the editor is implemented in Python, it runs surprisingly smoothly on
 normal hardware with small files.
 
 How to use it
 normal hardware with small files.
 
 How to use it
index 68f3e27a049802a2194ff21398d615efbc87cc58..5e2d11d1c68fd2505b5180558f937f4f0a933fb2 100644 (file)
@@ -36,7 +36,7 @@ class OutlinerPanel(wxPanel):
         wxPanel.Close(self)
 
 ##----------------------------------------------------------------------
         wxPanel.Close(self)
 
 ##----------------------------------------------------------------------
-    
+
 
 class FrogEditFrame(wxFrame):
     def __init__(self, parent, ID, title, pos=wxDefaultPosition,
 
 class FrogEditFrame(wxFrame):
     def __init__(self, parent, ID, title, pos=wxDefaultPosition,
@@ -48,7 +48,7 @@ class FrogEditFrame(wxFrame):
         win = OutlinerPanel(splitter, -1, style=wxCLIP_CHILDREN)
         win.parent = self
         log = self.MakeLogWindow(splitter)
         win = OutlinerPanel(splitter, -1, style=wxCLIP_CHILDREN)
         win.parent = self
         log = self.MakeLogWindow(splitter)
-        
+
         self.MakeStatusbar()
         self.MakeEditorWindow(win, log)
         self.SetUpSplitter(splitter, win, log)
         self.MakeStatusbar()
         self.MakeEditorWindow(win, log)
         self.SetUpSplitter(splitter, win, log)
@@ -57,6 +57,8 @@ class FrogEditFrame(wxFrame):
         self.RegisterEventHandlers()
         self.InitVariables()
 
         self.RegisterEventHandlers()
         self.InitVariables()
 
+        win.Layout()
+
 
 ##------------- Init Misc
 
 
 ##------------- Init Misc
 
@@ -66,7 +68,7 @@ class FrogEditFrame(wxFrame):
     def InitVariables(self):
         self.fileName = None
         self.edl.UnTouchBuffer()
     def InitVariables(self):
         self.fileName = None
         self.edl.UnTouchBuffer()
-        
+
     def MakeMenus(self):
         self.MainMenu = wxMenuBar()
         self.AddMenus(self.MainMenu)
     def MakeMenus(self):
         self.MainMenu = wxMenuBar()
         self.AddMenus(self.MainMenu)
@@ -172,7 +174,7 @@ class FrogEditFrame(wxFrame):
         messageDialog = wxMessageDialog(self, text, title, wxOK | wxICON_INFORMATION)
         messageDialog.ShowModal()
         messageDialog.Destroy()
         messageDialog = wxMessageDialog(self, text, title, wxOK | wxICON_INFORMATION)
         messageDialog.ShowModal()
         messageDialog.Destroy()
-    
+
     def OkCancelDialog(self, text, title):
         dialog = wxMessageDialog(self, text, title, wxOK | wxCANCEL | wxICON_INFORMATION)
         result = dialog.ShowModal()
     def OkCancelDialog(self, text, title):
         dialog = wxMessageDialog(self, text, title, wxOK | wxCANCEL | wxICON_INFORMATION)
         result = dialog.ShowModal()
@@ -191,11 +193,11 @@ class FrogEditFrame(wxFrame):
             wildCard = "*.*"
         fileName = None
         fileDialog = wxFileDialog(self, "Choose a file", defaultDir, defaultFile, wildCard, wxOPEN|wxMULTIPLE)
             wildCard = "*.*"
         fileName = None
         fileDialog = wxFileDialog(self, "Choose a file", defaultDir, defaultFile, wildCard, wxOPEN|wxMULTIPLE)
-        result = fileDialog.ShowModal() 
+        result = fileDialog.ShowModal()
         if result == wxID_OK:
             fileName = fileDialog.GetPath()
             wxLogMessage('You selected: %s\n' % fileName)
         if result == wxID_OK:
             fileName = fileDialog.GetPath()
             wxLogMessage('You selected: %s\n' % fileName)
-        fileDialog.Destroy()       
+        fileDialog.Destroy()
         return fileName
 
     def OpenFileError(self, fileName):
         return fileName
 
     def OpenFileError(self, fileName):
@@ -220,13 +222,13 @@ class FrogEditFrame(wxFrame):
 
     def SetAltFuncs(self, action):
         FrogEditor.SetAltFuncs(self.edl, action)
 
     def SetAltFuncs(self, action):
         FrogEditor.SetAltFuncs(self.edl, action)
-        action['x'] = self.OnFileExit 
+        action['x'] = self.OnFileExit
 
     def GetCurrentDir(self):
         if self.fileName is not None:
             return os.path.split(self.fileName)[0]
         return "."
 
     def GetCurrentDir(self):
         if self.fileName is not None:
             return os.path.split(self.fileName)[0]
         return "."
-            
+
     def GetFileName(self):
         if self.fileName is not None:
             return os.path.split(self.fileName)[1]
     def GetFileName(self):
         if self.fileName is not None:
             return os.path.split(self.fileName)[1]
@@ -263,7 +265,7 @@ class FrogEditFrame(wxFrame):
             return TRUE
         except:
             return FALSE
             return TRUE
         except:
             return FALSE
-        
+
 
 
 ##---------------- Event handlers
 
 
 ##---------------- Event handlers
@@ -279,7 +281,7 @@ class FrogEditFrame(wxFrame):
                 return
         self.NewFile()
         self.edl.SetFocus()
                 return
         self.NewFile()
         self.edl.SetFocus()
-    
+
     def OnOpenFile(self, event):
         if self.edl.BufferWasTouched():
             if not self.OkCancelDialog("Open file - abandon changes?", "Open File"):
     def OnOpenFile(self, event):
         if self.edl.BufferWasTouched():
             if not self.OkCancelDialog("Open file - abandon changes?", "Open File"):
@@ -289,7 +291,7 @@ class FrogEditFrame(wxFrame):
             if self.OpenFile(fileName) is FALSE:
                 self.OpenFileError(fileName)
         self.edl.SetFocus()
             if self.OpenFile(fileName) is FALSE:
                 self.OpenFileError(fileName)
         self.edl.SetFocus()
-    
+
     def OnSaveFile(self, event):
         if self.fileName is None:
             return self.OnSaveFileAs(event)
     def OnSaveFile(self, event):
         if self.fileName is None:
             return self.OnSaveFileAs(event)
@@ -297,7 +299,7 @@ class FrogEditFrame(wxFrame):
         if self.SaveFile(self.fileName) is not TRUE:
             self.SaveFileError(self.fileName)
         self.edl.SetFocus()
         if self.SaveFile(self.fileName) is not TRUE:
             self.SaveFileError(self.fileName)
         self.edl.SetFocus()
-    
+
     def OnSaveFileAs(self, event):
         fileName = self.SelectFileDialog(self.GetCurrentDir(),self.GetFileName())
         if fileName is not None:
     def OnSaveFileAs(self, event):
         fileName = self.SelectFileDialog(self.GetCurrentDir(),self.GetFileName())
         if fileName is not None:
@@ -306,8 +308,8 @@ class FrogEditFrame(wxFrame):
             if self.SaveFile(self.fileName) is not TRUE:
                 self.SaveFileError(self.fileName)
         self.edl.SetFocus()
             if self.SaveFile(self.fileName) is not TRUE:
                 self.SaveFileError(self.fileName)
         self.edl.SetFocus()
-    
-    def OnFileExit(self, event):        
+
+    def OnFileExit(self, event):
         if self.edl.BufferWasTouched():
             if not self.OkCancelDialog("Exit program - abandon changes?", "Exit"):
                 return
         if self.edl.BufferWasTouched():
             if not self.OkCancelDialog("Exit program - abandon changes?", "Exit"):
                 return
@@ -316,11 +318,11 @@ class FrogEditFrame(wxFrame):
     def OnEditPreferences(self, event):
         self.MessageDialog("Edit preferences is not implemented yet.", "Not implemented.")
         pass
     def OnEditPreferences(self, event):
         self.MessageDialog("Edit preferences is not implemented yet.", "Not implemented.")
         pass
-    
+
     def OnHelpAbout(self, event):
         self.MessageDialog(ABOUT_TEXT, "About FrogEdit")
         pass
     def OnHelpAbout(self, event):
         self.MessageDialog(ABOUT_TEXT, "About FrogEdit")
         pass
-    
+
     def Show(self, show):
         wxFrame.Show(self, show)
         self.edl.SetFocus()
     def Show(self, show):
         wxFrame.Show(self, show)
         self.edl.SetFocus()
@@ -330,7 +332,7 @@ class FrogEditFrame(wxFrame):
     def LoadInitialFile(self, fileName):
         if fileName is not None:
             if self.OpenFile(fileName) is FALSE:
     def LoadInitialFile(self, fileName):
         if fileName is not None:
             if self.OpenFile(fileName) is FALSE:
-                self.OpenFileError(fileName)        
+                self.OpenFileError(fileName)
 
 
 
 
 
 
@@ -341,7 +343,8 @@ class FrogEditLauncher:
 
     def MakeAppFrame(self):
         return FrogEditFrame(None, -1, "FrogEdit", size=(640, 480),
 
     def MakeAppFrame(self):
         return FrogEditFrame(None, -1, "FrogEdit", size=(640, 480),
-                             style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)    
+                             style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)
+
     def GetArgvFilename(self):
         if len(sys.argv) > 1:
             return sys.argv[1]
     def GetArgvFilename(self):
         if len(sys.argv) > 1:
             return sys.argv[1]
@@ -349,8 +352,8 @@ class FrogEditLauncher:
             return None
 
     def Main(self):
             return None
 
     def Main(self):
-        win = self.MakeAppFrame()
         app = wxPySimpleApp()
         app = wxPySimpleApp()
+        win = self.MakeAppFrame()
         win.Show(true)
         win.LoadInitialFile(self.GetArgvFilename())
         app.MainLoop()
         win.Show(true)
         win.LoadInitialFile(self.GetArgvFilename())
         app.MainLoop()
index ed41eb4ba143a51f886745cf5405d65a242e34b9..96ecf34550d519917f84d11a9139054926cd0599 100755 (executable)
@@ -13,7 +13,7 @@ from my_distutils import run_swig, contrib_copy_tree
 # flags and values that affect this script
 #----------------------------------------------------------------------
 
 # flags and values that affect this script
 #----------------------------------------------------------------------
 
-VERSION          = "2.3.2b7"
+VERSION          = "2.3.2b7+"
 DESCRIPTION      = "Cross platform GUI toolkit for Python"
 AUTHOR           = "Robin Dunn"
 AUTHOR_EMAIL     = "Robin Dunn <robin@alldunn.com>"
 DESCRIPTION      = "Cross platform GUI toolkit for Python"
 AUTHOR           = "Robin Dunn"
 AUTHOR_EMAIL     = "Robin Dunn <robin@alldunn.com>"
@@ -31,10 +31,11 @@ on.
 BUILD_GLCANVAS = 1 # If true, build the contrib/glcanvas extension module
 BUILD_OGL = 1      # If true, build the contrib/ogl extension module
 BUILD_STC = 1      # If true, build the contrib/stc extension module
 BUILD_GLCANVAS = 1 # If true, build the contrib/glcanvas extension module
 BUILD_OGL = 1      # If true, build the contrib/ogl extension module
 BUILD_STC = 1      # If true, build the contrib/stc extension module
-BUILD_IEWIN = 0    # Internet Explorer wrapper (experimental)
 BUILD_XRC = 1      # XML based resource system
 BUILD_GIZMOS = 1   # Build a module for the gizmos contrib library
 
 BUILD_XRC = 1      # XML based resource system
 BUILD_GIZMOS = 1   # Build a module for the gizmos contrib library
 
+BUILD_IEWIN = 0    # Internet Explorer wrapper (experimental)
+
 
 CORE_ONLY = 0      # if true, don't build any of the above
 GL_ONLY = 0        # Only used when making the -gl RPM.  See the "b" script
 
 CORE_ONLY = 0      # if true, don't build any of the above
 GL_ONLY = 0        # Only used when making the -gl RPM.  See the "b" script
index 7e68c2a5908ea26d91d7a8fd5d22fa86adedc6b0..d7e8d6a9637f09c58724ecc2bb2ed744fc63875b 100644 (file)
@@ -1,3 +1,4 @@
+*.dsp
 .emacs.desktop
 Makefile
 Makefile.pre
 .emacs.desktop
 Makefile
 Makefile.pre
@@ -32,6 +33,7 @@ wxPython.dsp
 wxPython.dsw
 wxPython.ncb
 wxPython.opt
 wxPython.dsw
 wxPython.ncb
 wxPython.opt
+wxSamples
 wxc.exp
 wxc.ilk
 wxc.lib
 wxc.exp
 wxc.ilk
 wxc.lib
@@ -43,4 +45,3 @@ wxpc.exp
 wxpc.lib
 wxpc.res
 wxpc.res.save
 wxpc.lib
 wxpc.res
 wxpc.res.save
-*.dsp
\ No newline at end of file
index b9d8802174beb2f7e532bb826d1fc6e654e85cb3..1265b0ba70171695c299a5da7292c87f4d473359 100644 (file)
@@ -1 +1 @@
-ver = '2.3.2b7'
+ver = '2.3.2b7+'
index 4e393463b1cf0a1c3b6e7a6d6d02fdbb95ff598b..cd743b007d8b7f757046833f2e56426cad8c6325 100644 (file)
@@ -475,6 +475,7 @@ enum {
 
     wxWS_EX_VALIDATE_RECURSIVELY,
     wxWS_EX_BLOCK_EVENTS,
 
     wxWS_EX_VALIDATE_RECURSIVELY,
     wxWS_EX_BLOCK_EVENTS,
+    wxWS_EX_TRANSIENT,
 
     // Mapping modes (as per Windows)
     wxMM_TEXT,
 
     // Mapping modes (as per Windows)
     wxMM_TEXT,
index 298d60550208a817597d16c0b5d9cd12f8c57e3f..12990e015cd4dfd32562575634d5185cf1b5ee86 100644 (file)
@@ -919,6 +919,7 @@ public:
     wxTreeItemId();
     ~wxTreeItemId();
     bool IsOk();
     wxTreeItemId();
     ~wxTreeItemId();
     bool IsOk();
+    %pragma(python) addtoclass = "Ok = IsOk"
 
     %addmethods {
         int __cmp__(wxTreeItemId* other) {
 
     %addmethods {
         int __cmp__(wxTreeItemId* other) {
index 5fc50375709d52051120ff0e392ba16fbfd66b21..1470b4b076ce8aed04579b5e0a71cb15269aeeae 100644 (file)
@@ -780,6 +780,7 @@ class wxTreeItemIdPtr :
         return val
     def __repr__(self):
         return "<C wxTreeItemId instance at %s>" % (self.this,)
         return val
     def __repr__(self):
         return "<C wxTreeItemId instance at %s>" % (self.this,)
+    Ok = IsOk
 class wxTreeItemId(wxTreeItemIdPtr):
     def __init__(self,*_args,**_kwargs):
         self.this = apply(controls2c.new_wxTreeItemId,_args,_kwargs)
 class wxTreeItemId(wxTreeItemIdPtr):
     def __init__(self,*_args,**_kwargs):
         self.this = apply(controls2c.new_wxTreeItemId,_args,_kwargs)
index b0950603dbdf5f3054a424ae85143915853f8993..e0951cff5259975e63b830147220c7e5c1c81a90 100644 (file)
@@ -5787,6 +5787,43 @@ static PyObject *_wrap_wxWindow_GetAcceleratorTable(PyObject *self, PyObject *ar
     return _resultobj;
 }
 
     return _resultobj;
 }
 
+#define wxWindow_base_OnPaint(_swigobj,_swigarg0)  (_swigobj->OnPaint(_swigarg0))
+static PyObject *_wrap_wxWindow_base_OnPaint(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxWindow * _arg0;
+    wxPaintEvent * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","event", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWindow_base_OnPaint",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_base_OnPaint. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPaintEvent_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_base_OnPaint. Expected _wxPaintEvent_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxWindow_base_OnPaint(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+    if (PyErr_Occurred()) return NULL;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
 static void *SwigwxPanelTowxWindow(void *ptr) {
     wxPanel *src;
     wxWindow *dest;
 static void *SwigwxPanelTowxWindow(void *ptr) {
     wxPanel *src;
     wxWindow *dest;
@@ -10562,6 +10599,7 @@ static PyMethodDef windowscMethods[] = {
         { "wxPanel_Create", (PyCFunction) _wrap_wxPanel_Create, METH_VARARGS | METH_KEYWORDS },
         { "new_wxPrePanel", (PyCFunction) _wrap_new_wxPrePanel, METH_VARARGS | METH_KEYWORDS },
         { "new_wxPanel", (PyCFunction) _wrap_new_wxPanel, METH_VARARGS | METH_KEYWORDS },
         { "wxPanel_Create", (PyCFunction) _wrap_wxPanel_Create, METH_VARARGS | METH_KEYWORDS },
         { "new_wxPrePanel", (PyCFunction) _wrap_new_wxPrePanel, METH_VARARGS | METH_KEYWORDS },
         { "new_wxPanel", (PyCFunction) _wrap_new_wxPanel, METH_VARARGS | METH_KEYWORDS },
+        { "wxWindow_base_OnPaint", (PyCFunction) _wrap_wxWindow_base_OnPaint, METH_VARARGS | METH_KEYWORDS },
         { "wxWindow_GetAcceleratorTable", (PyCFunction) _wrap_wxWindow_GetAcceleratorTable, METH_VARARGS | METH_KEYWORDS },
         { "wxWindow_SetAcceleratorTable", (PyCFunction) _wrap_wxWindow_SetAcceleratorTable, METH_VARARGS | METH_KEYWORDS },
         { "wxWindow_PrevControlId", (PyCFunction) _wrap_wxWindow_PrevControlId, METH_VARARGS | METH_KEYWORDS },
         { "wxWindow_GetAcceleratorTable", (PyCFunction) _wrap_wxWindow_GetAcceleratorTable, METH_VARARGS | METH_KEYWORDS },
         { "wxWindow_SetAcceleratorTable", (PyCFunction) _wrap_wxWindow_SetAcceleratorTable, METH_VARARGS | METH_KEYWORDS },
         { "wxWindow_PrevControlId", (PyCFunction) _wrap_wxWindow_PrevControlId, METH_VARARGS | METH_KEYWORDS },
index d702a31a85b4f7613cb3767bba3c227ef41c40e0..21add562c64965c62187cc6fd03e6ae509ba66ea 100644 (file)
@@ -556,6 +556,9 @@ class wxWindowPtr(wxEvtHandlerPtr):
         val = apply(windowsc.wxWindow_GetAcceleratorTable,(self,) + _args, _kwargs)
         if val: val = wxAcceleratorTablePtr(val) 
         return val
         val = apply(windowsc.wxWindow_GetAcceleratorTable,(self,) + _args, _kwargs)
         if val: val = wxAcceleratorTablePtr(val) 
         return val
+    def base_OnPaint(self, *_args, **_kwargs):
+        val = apply(windowsc.wxWindow_base_OnPaint,(self,) + _args, _kwargs)
+        return val
     def __repr__(self):
         return "<C wxWindow instance at %s>" % (self.this,)
     # replaces broken shadow method
     def __repr__(self):
         return "<C wxWindow instance at %s>" % (self.this,)
     # replaces broken shadow method
index 11a4f295bbdf07e20be5b49ab22de7beb3e2e503..87bedd78cd9929c7e3d9da2b86761c77290e482f 100644 (file)
@@ -2177,6 +2177,7 @@ SWIGEXPORT(void) initwxc() {
         PyDict_SetItemString(d,"wxJOY_BUTTON_ANY", PyInt_FromLong((long) wxJOY_BUTTON_ANY));
         PyDict_SetItemString(d,"wxWS_EX_VALIDATE_RECURSIVELY", PyInt_FromLong((long) wxWS_EX_VALIDATE_RECURSIVELY));
         PyDict_SetItemString(d,"wxWS_EX_BLOCK_EVENTS", PyInt_FromLong((long) wxWS_EX_BLOCK_EVENTS));
         PyDict_SetItemString(d,"wxJOY_BUTTON_ANY", PyInt_FromLong((long) wxJOY_BUTTON_ANY));
         PyDict_SetItemString(d,"wxWS_EX_VALIDATE_RECURSIVELY", PyInt_FromLong((long) wxWS_EX_VALIDATE_RECURSIVELY));
         PyDict_SetItemString(d,"wxWS_EX_BLOCK_EVENTS", PyInt_FromLong((long) wxWS_EX_BLOCK_EVENTS));
+        PyDict_SetItemString(d,"wxWS_EX_TRANSIENT", PyInt_FromLong((long) wxWS_EX_TRANSIENT));
         PyDict_SetItemString(d,"wxMM_TEXT", PyInt_FromLong((long) wxMM_TEXT));
         PyDict_SetItemString(d,"wxMM_LOMETRIC", PyInt_FromLong((long) wxMM_LOMETRIC));
         PyDict_SetItemString(d,"wxMM_HIMETRIC", PyInt_FromLong((long) wxMM_HIMETRIC));
         PyDict_SetItemString(d,"wxMM_TEXT", PyInt_FromLong((long) wxMM_TEXT));
         PyDict_SetItemString(d,"wxMM_LOMETRIC", PyInt_FromLong((long) wxMM_LOMETRIC));
         PyDict_SetItemString(d,"wxMM_HIMETRIC", PyInt_FromLong((long) wxMM_HIMETRIC));
index 365158fa2aafab5926f54269b1bfc5feccbfa0c1..e65da8df1c0626cd21191fa73ca6558e548297e2 100644 (file)
@@ -440,6 +440,7 @@ wxJOY_BUTTON4 = wxc.wxJOY_BUTTON4
 wxJOY_BUTTON_ANY = wxc.wxJOY_BUTTON_ANY
 wxWS_EX_VALIDATE_RECURSIVELY = wxc.wxWS_EX_VALIDATE_RECURSIVELY
 wxWS_EX_BLOCK_EVENTS = wxc.wxWS_EX_BLOCK_EVENTS
 wxJOY_BUTTON_ANY = wxc.wxJOY_BUTTON_ANY
 wxWS_EX_VALIDATE_RECURSIVELY = wxc.wxWS_EX_VALIDATE_RECURSIVELY
 wxWS_EX_BLOCK_EVENTS = wxc.wxWS_EX_BLOCK_EVENTS
+wxWS_EX_TRANSIENT = wxc.wxWS_EX_TRANSIENT
 wxMM_TEXT = wxc.wxMM_TEXT
 wxMM_LOMETRIC = wxc.wxMM_LOMETRIC
 wxMM_HIMETRIC = wxc.wxMM_HIMETRIC
 wxMM_TEXT = wxc.wxMM_TEXT
 wxMM_LOMETRIC = wxc.wxMM_LOMETRIC
 wxMM_HIMETRIC = wxc.wxMM_HIMETRIC
index a4bee153e1bfce86d33dc0d53dea04334d51d58e..1aab58d1dae6578c9604388a1ffa2883aefa62c6 100644 (file)
@@ -400,6 +400,9 @@ public:
 
     void SetAcceleratorTable(const wxAcceleratorTable& accel);
     wxAcceleratorTable *GetAcceleratorTable();
 
     void SetAcceleratorTable(const wxAcceleratorTable& accel);
     wxAcceleratorTable *GetAcceleratorTable();
+
+
+    %name(base_OnPaint)void OnPaint(wxPaintEvent& event);
 };
 
 
 };
 
 
index e531bff7ff826f01c5b082b9aba483e851f5a8cf..833d7678e5f5b3c4abd9a54b2041317d962fa2e4 100644 (file)
@@ -13,7 +13,7 @@
 #   syntax coloring and outliner collapse mode.  Adam and Steve
 #   inherited the code, and added a lot of basic editor
 #   functionality that had not been there before, such as cut-and-paste.
 #   syntax coloring and outliner collapse mode.  Adam and Steve
 #   inherited the code, and added a lot of basic editor
 #   functionality that had not been there before, such as cut-and-paste.
-#   
+#
 #
 # Created:     15-Dec-1999
 # RCS-ID:      $Id$
 #
 # Created:     15-Dec-1999
 # RCS-ID:      $Id$
@@ -31,7 +31,7 @@ import images
 
 #----------------------------
 
 
 #----------------------------
 
-def ForceBetween(min, val, max):                            
+def ForceBetween(min, val, max):
     if val  > max:
         return max
     if val < min:
     if val  > max:
         return max
     if val < min:
@@ -103,6 +103,7 @@ class wxEditor(wxScrolledWindow):
         EVT_PAINT(self, self.OnPaint)
         EVT_SIZE(self, self.OnSize)
         EVT_WINDOW_DESTROY(self, self.OnDestroy)
         EVT_PAINT(self, self.OnPaint)
         EVT_SIZE(self, self.OnSize)
         EVT_WINDOW_DESTROY(self, self.OnDestroy)
+        EVT_ERASE_BACKGROUND(self, self.OnEraseBackground)
 
 ##------------------- Platform-specific stuff
 
 
 ##------------------- Platform-specific stuff
 
@@ -111,7 +112,7 @@ class wxEditor(wxScrolledWindow):
             return wxFont(10, wxMODERN, wxNORMAL, wxNORMAL)
         else:
             return wxFont(12, wxMODERN, wxNORMAL, wxNORMAL, false)
             return wxFont(10, wxMODERN, wxNORMAL, wxNORMAL)
         else:
             return wxFont(12, wxMODERN, wxNORMAL, wxNORMAL, false)
-          
+
     def UnixKeyHack(self, key):
         # this will be obsolete when we get the new wxWindows patch
         if key <= 26:
     def UnixKeyHack(self, key):
         # this will be obsolete when we get the new wxWindows patch
         if key <= 26:
@@ -151,12 +152,15 @@ class wxEditor(wxScrolledWindow):
         self.KeepCursorOnScreen()
         self.DrawSimpleCursor(0,0,dc, true)
         self.Draw(dc)
         self.KeepCursorOnScreen()
         self.DrawSimpleCursor(0,0,dc, true)
         self.Draw(dc)
-        
+
     def OnPaint(self, event):
         dc = wxPaintDC(self)
         self.UpdateView(dc)
         self.AdjustScrollbars()
 
     def OnPaint(self, event):
         dc = wxPaintDC(self)
         self.UpdateView(dc)
         self.AdjustScrollbars()
 
+    def OnEraseBackground(self, evt):
+        pass
+
 ##-------------------- Drawing code
 
     def InitFonts(self):
 ##-------------------- Drawing code
 
     def InitFonts(self):
@@ -272,7 +276,7 @@ class wxEditor(wxScrolledWindow):
         self.sy = ForceBetween(max(0, self.cy-self.sh), self.sy, self.cy)
         self.sx = ForceBetween(max(0, self.cx-self.sw), self.sx, self.cx)
         self.AdjustScrollbars()
         self.sy = ForceBetween(max(0, self.cy-self.sh), self.sy, self.cy)
         self.sx = ForceBetween(max(0, self.cx-self.sw), self.sx, self.cx)
         self.AdjustScrollbars()
-            
+
     def HorizBoundaries(self):
         self.SetCharDimensions()
         maxLineLen = self.CalcMaxLineLen()
     def HorizBoundaries(self):
         self.SetCharDimensions()
         maxLineLen = self.CalcMaxLineLen()
@@ -283,11 +287,11 @@ class wxEditor(wxScrolledWindow):
         self.SetCharDimensions()
         self.sy = ForceBetween(0, self.sy, max(self.sh, self.LinesInFile() - self.sh + 1))
         self.cy = ForceBetween(self.sy, self.cy, self.sy + self.sh - 1)
         self.SetCharDimensions()
         self.sy = ForceBetween(0, self.sy, max(self.sh, self.LinesInFile() - self.sh + 1))
         self.cy = ForceBetween(self.sy, self.cy, self.sy + self.sh - 1)
-       
+
     def cVert(self, num):
         self.cy = self.cy + num
         self.cy = ForceBetween(0, self.cy, self.LinesInFile() - 1)
     def cVert(self, num):
         self.cy = self.cy + num
         self.cy = ForceBetween(0, self.cy, self.LinesInFile() - 1)
-        self.sy = ForceBetween(self.cy - self.sh + 1, self.sy, self.cy) 
+        self.sy = ForceBetween(self.cy - self.sh + 1, self.sy, self.cy)
         self.cx = min(self.cx, self.CurrentLineLength())
 
     def cHoriz(self, num):
         self.cx = min(self.cx, self.CurrentLineLength())
 
     def cHoriz(self, num):
@@ -346,7 +350,7 @@ class wxEditor(wxScrolledWindow):
 
     def TouchBuffer(self):
         self.bufferTouched = TRUE
 
     def TouchBuffer(self):
         self.bufferTouched = TRUE
-        
+
 
 ##-------------------------- Mouse scroll timing functions
 
 
 ##-------------------------- Mouse scroll timing functions
 
@@ -393,7 +397,7 @@ class wxEditor(wxScrolledWindow):
             row = self.sy + self.sh
             row  = min(row, self.LinesInFile() - 1)
             self.cy = row
             row = self.sy + self.sh
             row  = min(row, self.LinesInFile() - 1)
             self.cy = row
-        
+
     def HandleLeftOfScreen(self, col):
         self.SetScrollTimer()
         if self.CanScroll():
     def HandleLeftOfScreen(self, col):
         self.SetScrollTimer()
         if self.CanScroll():
@@ -407,7 +411,7 @@ class wxEditor(wxScrolledWindow):
             col = self.sx + self.sw
             col = min(col, self.CurrentLineLength())
             self.cx = col
             col = self.sx + self.sw
             col = min(col, self.CurrentLineLength())
             self.cx = col
-        
+
 ##------------------------ mousing functions
 
     def MouseToRow(self, mouseY):
 ##------------------------ mousing functions
 
     def MouseToRow(self, mouseY):
@@ -430,14 +434,14 @@ class wxEditor(wxScrolledWindow):
 
     def MouseToCursor(self, event):
         self.MouseToRow(event.GetY())
 
     def MouseToCursor(self, event):
         self.MouseToRow(event.GetY())
-        self.MouseToCol(event.GetX())            
+        self.MouseToCol(event.GetX())
 
     def OnMotion(self, event):
         if event.LeftIsDown():
             self.Selecting = true
             self.MouseToCursor(event)
             self.SelectUpdate()
 
     def OnMotion(self, event):
         if event.LeftIsDown():
             self.Selecting = true
             self.MouseToCursor(event)
             self.SelectUpdate()
-            
+
     def OnLeftDown(self, event):
         self.MouseToCursor(event)
         self.SelectBegin = (self.cy, self.cx)
     def OnLeftDown(self, event):
         self.MouseToCursor(event)
         self.SelectBegin = (self.cy, self.cx)
@@ -454,7 +458,7 @@ class wxEditor(wxScrolledWindow):
 
         self.ReleaseMouse()
         self.scrollTimer.Stop()
 
         self.ReleaseMouse()
         self.scrollTimer.Stop()
-            
+
 
 #------------------------- Scrolling
 
 
 #------------------------- Scrolling
 
@@ -495,7 +499,7 @@ class wxEditor(wxScrolledWindow):
             self.cy = self.LinesInFile()
         else:
             self.sy = event.GetPosition()
             self.cy = self.LinesInFile()
         else:
             self.sy = event.GetPosition()
-            
+
         self.VertBoundaries()
 
     def OnScroll(self, event):
         self.VertBoundaries()
 
     def OnScroll(self, event):
@@ -514,7 +518,7 @@ class wxEditor(wxScrolledWindow):
             self.scroller.SetScrollbars(
                 self.fw, self.fh,
                 self.CalcMaxLineLen()+3, max(self.LinesInFile()+1, self.sh),
             self.scroller.SetScrollbars(
                 self.fw, self.fh,
                 self.CalcMaxLineLen()+3, max(self.LinesInFile()+1, self.sh),
-                self.sx, self.sy) 
+                self.sx, self.sy)
 
 #------------ backspace, delete, return
 
 
 #------------ backspace, delete, return
 
@@ -540,11 +544,11 @@ class wxEditor(wxScrolledWindow):
         self.cx = len(t1)
         self.lines = self.lines[:self.cy] + [t1 + t2] + self.lines[self.cy+2:]
         self.TouchBuffer()
         self.cx = len(t1)
         self.lines = self.lines[:self.cy] + [t1 + t2] + self.lines[self.cy+2:]
         self.TouchBuffer()
-        
+
 
     def DeleteChar(self,x,y,oldtext):
         newtext = oldtext[:x] + oldtext[x+1:]
 
     def DeleteChar(self,x,y,oldtext):
         newtext = oldtext[:x] + oldtext[x+1:]
-        self.SetTextLine(y, newtext)        
+        self.SetTextLine(y, newtext)
         self.TouchBuffer()
 
 
         self.TouchBuffer()
 
 
@@ -561,7 +565,7 @@ class wxEditor(wxScrolledWindow):
                 self.TouchBuffer()
             else:
                 wxBell()
                 self.TouchBuffer()
             else:
                 wxBell()
-            
+
     def Delete(self, event):
         t = self.GetTextLine(self.cy)
         if self.cx<len(t):
     def Delete(self, event):
         t = self.GetTextLine(self.cy)
         if self.cx<len(t):
@@ -577,7 +581,7 @@ class wxEditor(wxScrolledWindow):
 
     def TabKey(self, event):
         numSpaces = self.SpacesPerTab - (self.cx % self.SpacesPerTab)
 
     def TabKey(self, event):
         numSpaces = self.SpacesPerTab - (self.cx % self.SpacesPerTab)
-        self.SingleLineInsert(' ' * numSpaces)       
+        self.SingleLineInsert(' ' * numSpaces)
 
 ##----------- selection routines
 
 
 ##----------- selection routines
 
@@ -599,7 +603,7 @@ class wxEditor(wxScrolledWindow):
                 return (begin, end)
             else:
                 return (end, begin)
                 return (begin, end)
             else:
                 return (end, begin)
-                
+
     def FindSelection(self):
         if self.SelectEnd is None or self.SelectBegin is None:
             wxBell()
     def FindSelection(self):
         if self.SelectEnd is None or self.SelectBegin is None:
             wxBell()
@@ -620,12 +624,12 @@ class wxEditor(wxScrolledWindow):
         if selection is None:
             return
         (bRow, bCol, eRow, eCol) = selection
         if selection is None:
             return
         (bRow, bCol, eRow, eCol) = selection
-        
+
         if bRow == eRow:
             self.SingleLineCopy(bRow, bCol, eCol)
         else:
             self.MultipleLineCopy(bRow, bCol, eRow, eCol)
         if bRow == eRow:
             self.SingleLineCopy(bRow, bCol, eCol)
         else:
             self.MultipleLineCopy(bRow, bCol, eRow, eCol)
-        
+
     def OnCopySelection(self, event):
         self.CopySelection(event)
         self.SelectOff()
     def OnCopySelection(self, event):
         self.CopySelection(event)
         self.SelectOff()
@@ -636,7 +640,7 @@ class wxEditor(wxScrolledWindow):
     def SingleLineCopy(self, Row, bCol, eCol):
         Line = self.GetTextLine(Row)
         self.CopyData([Line[bCol:eCol]])
     def SingleLineCopy(self, Row, bCol, eCol):
         Line = self.GetTextLine(Row)
         self.CopyData([Line[bCol:eCol]])
-            
+
     def MultipleLineCopy(self, bRow, bCol, eRow, eCol):
         bLine = self.GetTextLine(bRow)[bCol:]
         eLine = self.GetTextLine(eRow)[:eCol]
     def MultipleLineCopy(self, bRow, bCol, eRow, eCol):
         bLine = self.GetTextLine(bRow)[bCol:]
         eLine = self.GetTextLine(eRow)[:eCol]
@@ -647,7 +651,7 @@ class wxEditor(wxScrolledWindow):
         if selection is None:
             return
         (bRow, bCol, eRow, eCol) = selection
         if selection is None:
             return
         (bRow, bCol, eRow, eCol) = selection
-        
+
         if bRow == eRow:
             self.SingleLineDelete(bRow, bCol, eCol)
         else:
         if bRow == eRow:
             self.SingleLineDelete(bRow, bCol, eCol)
         else:
@@ -684,7 +688,7 @@ class wxEditor(wxScrolledWindow):
         else:
             self.MultipleLinePaste()
 
         else:
             self.MultipleLinePaste()
 
-    def SingleLineInsert(self, newText): 
+    def SingleLineInsert(self, newText):
         ModLine = self.GetTextLine(self.cy)
         ModLine = ModLine[:self.cx] + newText + ModLine[self.cx:]
         self.SetTextLine(self.cy, ModLine)
         ModLine = self.GetTextLine(self.cy)
         ModLine = ModLine[:self.cx] + newText + ModLine[self.cx:]
         self.SetTextLine(self.cy, ModLine)
@@ -710,7 +714,7 @@ class wxEditor(wxScrolledWindow):
     def OnCutSelection(self,event):
         self.CopySelection(event)
         self.OnDeleteSelection(event)
     def OnCutSelection(self,event):
         self.CopySelection(event)
         self.OnDeleteSelection(event)
-        
+
 #-------------- Keyboard movement implementations
 
     def MoveDown(self, event):
 #-------------- Keyboard movement implementations
 
     def MoveDown(self, event):
@@ -739,7 +743,7 @@ class wxEditor(wxScrolledWindow):
                 self.cVert(1)
         else:
             self.cx += 1
                 self.cVert(1)
         else:
             self.cx += 1
-           
+
 
     def MovePageDown(self, event):
         self.cVert(self.sh)
 
     def MovePageDown(self, event):
         self.cVert(self.sh)
@@ -810,7 +814,7 @@ class wxEditor(wxScrolledWindow):
 
         if not action.has_key(key):
             return false
 
         if not action.has_key(key):
             return false
-       
+
         if event.ShiftDown():
             if not self.Selecting:
                 self.Selecting = true
         if event.ShiftDown():
             if not self.Selecting:
                 self.Selecting = true
@@ -821,7 +825,7 @@ class wxEditor(wxScrolledWindow):
             action[key](event)
             if self.Selecting:
                 self.Selecting = false
             action[key](event)
             if self.Selecting:
                 self.Selecting = false
-                
+
         self.SelectNotify(self.Selecting, self.SelectBegin, self.SelectEnd)
         self.UpdateView()
         return true
         self.SelectNotify(self.Selecting, self.SelectBegin, self.SelectEnd)
         self.UpdateView()
         return true
@@ -861,7 +865,7 @@ class wxEditor(wxScrolledWindow):
 
     def AltKey(self, event, key):
         return self.ModifierKey(key, event, event.AltDown(), self.SetAltFuncs)
 
     def AltKey(self, event, key):
         return self.ModifierKey(key, event, event.AltDown(), self.SetAltFuncs)
-    
+
     def SpecialControlKey(self, event, key):
         if not event.ControlDown():
             return false
     def SpecialControlKey(self, event, key):
         if not event.ControlDown():
             return false
@@ -917,7 +921,7 @@ class wxEditor(wxScrolledWindow):
 
     def OnClick(self):
         pass
 
     def OnClick(self):
         pass
-        
+
     def SelectNotify(self, Selecting, SelectionBegin, SelectionEnd):
         pass
 
     def SelectNotify(self, Selecting, SelectionBegin, SelectionEnd):
         pass