Added SplitTree sample to the demo

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
This commit is contained in:
Robin Dunn
2001-12-03 20:41:03 +00:00
parent 9bbe7068c4
commit 78e8819c2e
29 changed files with 224 additions and 275 deletions

View File

@@ -95,7 +95,15 @@ same document.
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.

View File

@@ -4355,81 +4355,6 @@ static PyObject *_wrap_wxPyShape_SetBrush(PyObject *self, PyObject *args, PyObje
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;
@@ -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_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 },

View File

@@ -451,12 +451,6 @@ class wxPyShapePtr(wxPyShapeEvtHandlerPtr):
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
@@ -781,6 +775,15 @@ class wxPyShapePtr(wxPyShapeEvtHandlerPtr):
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

View File

@@ -38,6 +38,7 @@ _treeList = [
'wxPopupWindow',
'wxDynamicSashWindow',
'wxEditableListBox',
'SplitTree',
]),
('Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame',
@@ -74,6 +75,7 @@ _treeList = [
'ActiveXWrapper_Acrobat', 'ActiveXWrapper_IE',
'wxDragImage', "wxProcess", "FancyText", "OOR", "wxWave",
'wxJoystick', 'DrawXXXList', 'ErrorDialogs', 'wxMimeTypesManager',
'SplitTree',
]),
('wxPython Library', ['Layoutf', 'wxScrolledMessageDialog',

View File

@@ -10,29 +10,62 @@ class TestTree(wxRemotelyScrolledTreeCtrl):
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
##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):
self.AppendItem(item, "Child %d" % j, im2)
child = self.AppendItem(item, "Child %d" % j, im2)
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")
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):
@@ -44,6 +77,10 @@ class TestValueWindow(wxTreeCompanionWindow):
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)

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

View 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 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",
]

View File

@@ -1937,8 +1937,11 @@ def getSmallDnArrowImage():
#----------------------------------------------------------------------
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())
@@ -1949,129 +1952,11 @@ def getFolder1Image():
#----------------------------------------------------------------------
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())
@@ -2079,11 +1964,28 @@ def 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(
'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())
@@ -2091,3 +1993,17 @@ def 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())

View File

@@ -8,7 +8,7 @@ def runTest(frame, nb, log):
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)
@@ -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
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

View File

@@ -36,7 +36,7 @@ class OutlinerPanel(wxPanel):
wxPanel.Close(self)
##----------------------------------------------------------------------
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)
self.MakeStatusbar()
self.MakeEditorWindow(win, log)
self.SetUpSplitter(splitter, win, log)
@@ -57,6 +57,8 @@ class FrogEditFrame(wxFrame):
self.RegisterEventHandlers()
self.InitVariables()
win.Layout()
##------------- Init Misc
@@ -66,7 +68,7 @@ class FrogEditFrame(wxFrame):
def InitVariables(self):
self.fileName = None
self.edl.UnTouchBuffer()
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()
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)
result = fileDialog.ShowModal()
result = fileDialog.ShowModal()
if result == wxID_OK:
fileName = fileDialog.GetPath()
wxLogMessage('You selected: %s\n' % fileName)
fileDialog.Destroy()
fileDialog.Destroy()
return fileName
def OpenFileError(self, fileName):
@@ -220,13 +222,13 @@ class FrogEditFrame(wxFrame):
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 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
##---------------- Event handlers
@@ -279,7 +281,7 @@ class FrogEditFrame(wxFrame):
return
self.NewFile()
self.edl.SetFocus()
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()
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()
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()
def OnFileExit(self, event):
def OnFileExit(self, event):
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 OnHelpAbout(self, event):
self.MessageDialog(ABOUT_TEXT, "About FrogEdit")
pass
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:
self.OpenFileError(fileName)
self.OpenFileError(fileName)
@@ -341,7 +343,8 @@ class FrogEditLauncher:
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]
@@ -349,8 +352,8 @@ class FrogEditLauncher:
return None
def Main(self):
win = self.MakeAppFrame()
app = wxPySimpleApp()
win = self.MakeAppFrame()
win.Show(true)
win.LoadInitialFile(self.GetArgvFilename())
app.MainLoop()

View File

@@ -13,7 +13,7 @@ from my_distutils import run_swig, contrib_copy_tree
# 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>"
@@ -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_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_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

View File

@@ -1,3 +1,4 @@
*.dsp
.emacs.desktop
Makefile
Makefile.pre
@@ -32,6 +33,7 @@ wxPython.dsp
wxPython.dsw
wxPython.ncb
wxPython.opt
wxSamples
wxc.exp
wxc.ilk
wxc.lib
@@ -43,4 +45,3 @@ wxpc.exp
wxpc.lib
wxpc.res
wxpc.res.save
*.dsp

View File

@@ -1 +1 @@
ver = '2.3.2b7'
ver = '2.3.2b7+'

View File

@@ -475,6 +475,7 @@ enum {
wxWS_EX_VALIDATE_RECURSIVELY,
wxWS_EX_BLOCK_EVENTS,
wxWS_EX_TRANSIENT,
// Mapping modes (as per Windows)
wxMM_TEXT,

View File

@@ -919,6 +919,7 @@ public:
wxTreeItemId();
~wxTreeItemId();
bool IsOk();
%pragma(python) addtoclass = "Ok = IsOk"
%addmethods {
int __cmp__(wxTreeItemId* other) {

View File

@@ -780,6 +780,7 @@ class wxTreeItemIdPtr :
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)

View File

@@ -5787,6 +5787,43 @@ static PyObject *_wrap_wxWindow_GetAcceleratorTable(PyObject *self, PyObject *ar
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;
@@ -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 },
{ "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 },

View File

@@ -556,6 +556,9 @@ class wxWindowPtr(wxEvtHandlerPtr):
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

View 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,"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));

View 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
wxWS_EX_TRANSIENT = wxc.wxWS_EX_TRANSIENT
wxMM_TEXT = wxc.wxMM_TEXT
wxMM_LOMETRIC = wxc.wxMM_LOMETRIC
wxMM_HIMETRIC = wxc.wxMM_HIMETRIC

View File

@@ -400,6 +400,9 @@ public:
void SetAcceleratorTable(const wxAcceleratorTable& accel);
wxAcceleratorTable *GetAcceleratorTable();
%name(base_OnPaint)void OnPaint(wxPaintEvent& event);
};

View 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.
#
#
#
# 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:
@@ -103,6 +103,7 @@ class wxEditor(wxScrolledWindow):
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
@@ -111,7 +112,7 @@ class wxEditor(wxScrolledWindow):
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:
@@ -151,12 +152,15 @@ class wxEditor(wxScrolledWindow):
self.KeepCursorOnScreen()
self.DrawSimpleCursor(0,0,dc, true)
self.Draw(dc)
def OnPaint(self, event):
dc = wxPaintDC(self)
self.UpdateView(dc)
self.AdjustScrollbars()
def OnEraseBackground(self, evt):
pass
##-------------------- 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()
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)
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):
@@ -346,7 +350,7 @@ class wxEditor(wxScrolledWindow):
def TouchBuffer(self):
self.bufferTouched = TRUE
##-------------------------- 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
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
##------------------------ mousing functions
def MouseToRow(self, mouseY):
@@ -430,14 +434,14 @@ class wxEditor(wxScrolledWindow):
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 OnLeftDown(self, event):
self.MouseToCursor(event)
self.SelectBegin = (self.cy, self.cx)
@@ -454,7 +458,7 @@ class wxEditor(wxScrolledWindow):
self.ReleaseMouse()
self.scrollTimer.Stop()
#------------------------- Scrolling
@@ -495,7 +499,7 @@ class wxEditor(wxScrolledWindow):
self.cy = self.LinesInFile()
else:
self.sy = event.GetPosition()
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.sx, self.sy)
self.sx, self.sy)
#------------ 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()
def DeleteChar(self,x,y,oldtext):
newtext = oldtext[:x] + oldtext[x+1:]
self.SetTextLine(y, newtext)
self.SetTextLine(y, newtext)
self.TouchBuffer()
@@ -561,7 +565,7 @@ class wxEditor(wxScrolledWindow):
self.TouchBuffer()
else:
wxBell()
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)
self.SingleLineInsert(' ' * numSpaces)
self.SingleLineInsert(' ' * numSpaces)
##----------- selection routines
@@ -599,7 +603,7 @@ class wxEditor(wxScrolledWindow):
return (begin, end)
else:
return (end, begin)
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 bRow == eRow:
self.SingleLineCopy(bRow, bCol, eCol)
else:
self.MultipleLineCopy(bRow, bCol, eRow, eCol)
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 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 bRow == eRow:
self.SingleLineDelete(bRow, bCol, eCol)
else:
@@ -684,7 +688,7 @@ class wxEditor(wxScrolledWindow):
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)
@@ -710,7 +714,7 @@ class wxEditor(wxScrolledWindow):
def OnCutSelection(self,event):
self.CopySelection(event)
self.OnDeleteSelection(event)
#-------------- Keyboard movement implementations
def MoveDown(self, event):
@@ -739,7 +743,7 @@ class wxEditor(wxScrolledWindow):
self.cVert(1)
else:
self.cx += 1
def MovePageDown(self, event):
self.cVert(self.sh)
@@ -810,7 +814,7 @@ class wxEditor(wxScrolledWindow):
if not action.has_key(key):
return false
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
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 SpecialControlKey(self, event, key):
if not event.ControlDown():
return false
@@ -917,7 +921,7 @@ class wxEditor(wxScrolledWindow):
def OnClick(self):
pass
def SelectNotify(self, Selecting, SelectionBegin, SelectionEnd):
pass