1. wxHtmlHelpController and related classes
2. the C++ versions of wxSizer and firends, Python versions are 'depreciated' 3. wxPyEvent and wxPyCommandEvent, event classes that can carry some python objects through the event system and safely come back out again. 4. wxGridSizer and wxFlexGridSizer 5. wxValidator 6. wxPyOnDemandOutputWindow 7. several tweaks, fixes and additions of missing methods, etc. 8. and probably several other things I am forgetting since CVS was down so long... git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3758 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -601,6 +601,14 @@ def EVT_LIST_INSERT_ITEM(win, id, func):
|
||||
def EVT_LIST_COL_CLICK(win, id, func):
|
||||
win.Connect(id, -1, wxEVT_COMMAND_LIST_COL_CLICK, func)
|
||||
|
||||
def EVT_LIST_ITEM_RIGHT_CLICK(win, id, func):
|
||||
win.Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, func)
|
||||
|
||||
def EVT_LIST_ITEM_MIDDLE_CLICK(win, id, func):
|
||||
win.Connect(id, -1, wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, func)
|
||||
|
||||
|
||||
|
||||
#wxSplitterWindow
|
||||
def EVT_SPLITTER_SASH_POS_CHANGING(win, id, func):
|
||||
win.Connect(id, -1, wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, func)
|
||||
@@ -643,18 +651,10 @@ wxPyDefaultPosition.Set(-1,-1)
|
||||
wxPyDefaultSize.Set(-1,-1)
|
||||
|
||||
# aliases so that C++ documentation applies:
|
||||
wxDefaultPosition = wxPyDefaultPosition
|
||||
wxDefaultSize = wxPyDefaultSize
|
||||
wxDefaultPosition = wxPyDefaultPosition
|
||||
wxDefaultSize = wxPyDefaultSize
|
||||
|
||||
|
||||
# This is to cover up a bug in SWIG. We are redefining
|
||||
# the shadow class that is generated for wxAcceleratorTable
|
||||
# because SWIG incorrectly uses "arg0.this"
|
||||
class wxAcceleratorTable(wxAcceleratorTablePtr):
|
||||
def __init__(self,arg0) :
|
||||
self.this = miscc.new_wxAcceleratorTable(arg0)
|
||||
self.thisown = 1
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# This helper function will take a wxPython object and convert it to
|
||||
# another wxPython object type. This will not be able to create objects
|
||||
@@ -689,31 +689,36 @@ def wxPyTypeCast(obj, typeStr):
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
## class wxPyStdOutWindow:
|
||||
## def __init__(self, title = "wxPython: stdout/stderr"):
|
||||
## self.frame = None
|
||||
## self.title = title
|
||||
class wxPyOnDemandOutputWindow:
|
||||
def __init__(self, title = "wxPython: stdout/stderr"):
|
||||
self.frame = None
|
||||
self.title = title
|
||||
|
||||
## def write(self, str):
|
||||
## if not self.frame:
|
||||
## self.frame = wxFrame(NULL, -1, self.title)
|
||||
## self.text = wxTextCtrl(self.frame, -1, "", wxPoint(0,0), wxDefaultSize,
|
||||
## wxTE_MULTILINE|wxTE_READONLY)
|
||||
## self.frame.SetSize(wxSize(450, 300))
|
||||
## self.frame.Show(true)
|
||||
## EVT_CLOSE(self.frame, self.OnCloseWindow)
|
||||
## self.text.AppendText(str)
|
||||
def SetParent(self, parent):
|
||||
self.parent = parent
|
||||
|
||||
## def OnCloseWindow(self, event):
|
||||
## wxBell()
|
||||
## self.frame.Destroy()
|
||||
## self.frame = None
|
||||
## self.text = None
|
||||
def OnCloseWindow(self, event):
|
||||
if self.frame != None:
|
||||
self.frame.Destroy()
|
||||
self.frame = None
|
||||
self.text = None
|
||||
|
||||
# this provides the file-like behaviour
|
||||
def write(self, str):
|
||||
if not self.frame:
|
||||
self.frame = wxFrame(self.parent, -1, self.title)
|
||||
self.text = wxTextCtrl(self.frame, -1, "",
|
||||
style = wxTE_MULTILINE|wxTE_READONLY)
|
||||
self.frame.SetSize(wxSize(450, 300))
|
||||
self.frame.Show(true)
|
||||
EVT_CLOSE(self.frame, self.OnCloseWindow)
|
||||
self.text.AppendText(str)
|
||||
|
||||
def close(self):
|
||||
self.frame = None
|
||||
self.text = None
|
||||
|
||||
|
||||
## def close(self):
|
||||
## if self.frame:
|
||||
## self.frame.Close(true)
|
||||
|
||||
_defRedirect = (wxPlatform == '__WXMSW__')
|
||||
|
||||
@@ -723,6 +728,7 @@ _defRedirect = (wxPlatform == '__WXMSW__')
|
||||
|
||||
class wxApp(wxPyApp):
|
||||
error = 'wxApp.error'
|
||||
outputWindowClass = wxPyOnDemandOutputWindow
|
||||
|
||||
def __init__(self, redirect=_defRedirect, filename=None):
|
||||
wxPyApp.__init__(self)
|
||||
@@ -730,7 +736,6 @@ class wxApp(wxPyApp):
|
||||
self.saveStdio = (sys.stdout, sys.stderr)
|
||||
if redirect:
|
||||
self.RedirectStdio(filename)
|
||||
|
||||
# this initializes wxWindows and then calls our OnInit
|
||||
_wxStart(self.OnInit)
|
||||
|
||||
@@ -741,12 +746,22 @@ class wxApp(wxPyApp):
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def SetTopWindow(self, frame):
|
||||
if self.stdioWin:
|
||||
self.stdioWin.SetParent(frame)
|
||||
sys.stdout = self.stdioWin #sys.stderr =
|
||||
wxPyApp.SetTopWindow(self, frame)
|
||||
|
||||
def MainLoop(self):
|
||||
wxPyApp.MainLoop(self)
|
||||
self.RestoreStdio()
|
||||
|
||||
def RedirectStdio(self, filename):
|
||||
if filename:
|
||||
sys.stdout = sys.stderr = open(filename, 'a')
|
||||
else:
|
||||
raise self.error, 'wxPyStdOutWindow not yet implemented.'
|
||||
#self.stdioWin = sys.stdout = sys.stderr = wxPyStdOutWindow()
|
||||
self.stdioWin = self.outputWindowClass() # wxPyOnDemandOutputWindow
|
||||
|
||||
def RestoreStdio(self):
|
||||
sys.stdout, sys.stderr = self.saveStdio
|
||||
@@ -754,6 +769,7 @@ class wxApp(wxPyApp):
|
||||
self.stdioWin.close()
|
||||
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# DO NOT hold any other references to this object. This is how we know when
|
||||
# to cleanup system resources that wxWin is holding...
|
||||
|
Reference in New Issue
Block a user