X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/299647acac7960652aadb008775429c1f8ea9b8d..015fd9ef4833ec3d8b0043a1c7e448c8be4f734a:/wxPython/demo/Main.py?ds=sidebyside
diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py
index b6c623007a..7dfe9cb2f7 100644
--- a/wxPython/demo/Main.py
+++ b/wxPython/demo/Main.py
@@ -20,7 +20,9 @@ import images
# For debugging
##wx.Trap();
-##print os.getpid(); raw_input("Press a key...")
+##print "wx.VERSION_STRING = ", wx.VERSION_STRING
+##print os.getpid();
+##raw_input("Press Enter...")
#---------------------------------------------------------------------------
@@ -28,15 +30,9 @@ import images
_treeList = [
# new stuff
- ('Recent Additions', [
- 'VListBox',
- 'Listbook',
- 'MaskedNumCtrl',
+ ('Recent Additions/Updates', [
+ 'OGL',
'FloatCanvas',
- 'XmlResourceSubclass',
- 'GridBagSizer',
- 'Cursor',
- 'PyPlot',
]),
# managed windows == things with a (optional) caption you can close
@@ -66,7 +62,6 @@ _treeList = [
# dialogs from libraries
('More Dialogs', [
- 'ErrorDialogs',
'ImageBrowser',
'MultipleChoiceDialog',
'ScrolledMessageDialog',
@@ -74,6 +69,7 @@ _treeList = [
# core controls
('Core Windows/Controls', [
+ 'BitmapButton',
'Button',
'CheckBox',
'CheckListBox',
@@ -123,6 +119,9 @@ _treeList = [
# controls coming from other libraries
('More Windows/Controls', [
+ 'ActiveX_FlashWindow',
+ 'ActiveX_IEHtmlWindow',
+ 'ActiveX_PDFWindow',
#'RightTextCtrl', deprecated as we have wxTE_RIGHT now.
'Calendar',
'CalendarCtrl',
@@ -134,7 +133,6 @@ _treeList = [
'FloatBar',
'FloatCanvas',
'HtmlWindow',
- 'IEHtmlWin',
'IntCtrl',
'MVCTree',
'MaskedEditControls',
@@ -171,7 +169,6 @@ _treeList = [
('Process and Events', [
'EventManager',
'KeyEvents',
- 'OOR',
'Process',
'PythonEvents',
'Threads',
@@ -192,6 +189,7 @@ _treeList = [
'Cursor',
'DragImage',
'Image',
+ 'ImageAlpha',
'ImageFromStream',
'Mask',
'Throbber',
@@ -205,21 +203,16 @@ _treeList = [
'FileHistory',
'FontEnumerator',
'Joystick',
- 'NewNamespace',
'OGL',
'PrintFramework',
'ShapedWindow',
- 'Throbber',
+ 'Sound',
'Unicode',
- 'Wave',
]),
# need libs not coming with the demo
- ('Objects using an external library', [
- 'ActiveXWrapper_Acrobat',
- 'ActiveXWrapper_IE',
+ ('Samples using an external library', [
'GLCanvas',
- #'PlotCanvas', # deprecated, use PyPlot
]),
@@ -258,16 +251,18 @@ class MyTP(wx.PyTipProvider):
#
try:
- ##raise ImportError
+ ##raise ImportError # for testing the alternate implementation
from wx import stc
from StyledTextCtrl_2 import PythonSTC
class DemoCodeViewer(PythonSTC):
def __init__(self, parent, ID):
- PythonSTC.__init__(self, parent, ID)
+ PythonSTC.__init__(self, parent, ID, wx.BORDER_NONE)
self.SetUpEditor()
# Some methods to make it compatible with how the wxTextCtrl is used
def SetValue(self, value):
+ if wx.USE_UNICODE:
+ value = value.decode('iso8859_1')
self.SetReadOnly(False)
self.SetText(value)
self.SetReadOnly(True)
@@ -431,6 +426,7 @@ class wxPythonDemo(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, -1, title, size = (800, 600),
style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
+
self.cwd = os.getcwd()
self.curOverview = ""
@@ -441,8 +437,11 @@ class wxPythonDemo(wx.Frame):
if wx.Platform != '__WXMAC__':
# setup a taskbar icon, and catch some events from it
+ dim = 16 # (may want to use 22 on wxGTK...)
icon = wx.IconFromBitmap(
- images.getMondrianImage().Scale(16,16).ConvertToBitmap() )
+ images.getMondrianImage().Scale(dim,dim).ConvertToBitmap() )
+ #icon = wx.Icon('bmp_source/mondrian.ico', wx.BITMAP_TYPE_ICO)
+ #icon = images.getMondrianIcon()
self.tbicon = wx.TaskBarIcon()
self.tbicon.SetIcon(icon, "wxPython Demo")
self.tbicon.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnTaskBarActivate)
@@ -461,8 +460,24 @@ class wxPythonDemo(wx.Frame):
self.Centre(wx.BOTH)
self.CreateStatusBar(1, wx.ST_SIZEGRIP)
- splitter = wx.SplitterWindow(self, -1)
- splitter2 = wx.SplitterWindow(splitter, -1)
+ splitter = wx.SplitterWindow(self, -1, style=wx.CLIP_CHILDREN | wx.SP_LIVE_UPDATE | wx.SP_3D)
+ splitter2 = wx.SplitterWindow(splitter, -1, style=wx.CLIP_CHILDREN | wx.SP_LIVE_UPDATE | wx.SP_3D)
+
+ # Set up a log on the View Log Notebook page
+ self.log = wx.TextCtrl(splitter2, -1,
+ style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
+
+ # Set the wxWindows log target to be this textctrl
+ #wx.Log_SetActiveTarget(wx.LogTextCtrl(self.log))
+
+ # But instead of the above we want to show how to use our own wx.Log class
+ wx.Log_SetActiveTarget(MyLog(self.log))
+
+ # for serious debugging
+ #wx.Log_SetActiveTarget(wx.LogStderr())
+ #wx.Log_SetTraceMask(wx.TraceMessages)
+
+
def EmptyHandler(evt): pass
#splitter.Bind(wx.EVT_ERASE_BACKGROUND, EmptyHandler)
@@ -474,10 +489,15 @@ class wxPythonDemo(wx.Frame):
# Make a File menu
self.mainmenu = wx.MenuBar()
menu = wx.Menu()
- exitID = wx.NewId()
- menu.Append(exitID, 'E&xit\tAlt-X', 'Get the heck outta here!')
- self.Bind(wx.EVT_MENU, self.OnFileExit, id=exitID)
- wx.App_SetMacExitMenuItemId(exitID)
+ item = menu.Append(-1, '&Redirect Output',
+ 'Redirect print statements to a window',
+ wx.ITEM_CHECK)
+ self.Bind(wx.EVT_MENU, self.OnToggleRedirect, item)
+
+ item = menu.Append(-1, 'E&xit\tAlt-X', 'Get the heck outta here!')
+ self.Bind(wx.EVT_MENU, self.OnFileExit, item)
+ wx.App_SetMacExitMenuItemId(item.GetId())
+
self.mainmenu.Append(menu, '&File')
# Make a Demo menu
@@ -485,9 +505,8 @@ class wxPythonDemo(wx.Frame):
for item in _treeList:
submenu = wx.Menu()
for childItem in item[1]:
- mID = wx.NewId()
- submenu.Append(mID, childItem)
- self.Bind(wx.EVT_MENU, self.OnDemoMenu, id=mID)
+ mi = submenu.Append(-1, childItem)
+ self.Bind(wx.EVT_MENU, self.OnDemoMenu, mi)
menu.AppendMenu(wx.NewId(), item[0], submenu)
self.mainmenu.Append(menu, '&Demo')
@@ -497,14 +516,14 @@ class wxPythonDemo(wx.Frame):
findID = wx.NewId()
findnextID = wx.NewId()
menu = wx.Menu()
- menu.Append(findID, '&Find\tCtrl-F', 'Find in the Demo Code')
- menu.Append(findnextID, 'Find &Next\tF3', 'Find Next')
+ findItem = menu.Append(-1, '&Find\tCtrl-F', 'Find in the Demo Code')
+ findnextItem = menu.Append(-1, 'Find &Next\tF3', 'Find Next')
menu.AppendSeparator()
- menu.Append(helpID, '&About\tCtrl-H', 'wxPython RULES!!!')
- wx.App_SetMacAboutMenuItemId(helpID)
- self.Bind(wx.EVT_MENU, self.OnHelpAbout, id=helpID)
- self.Bind(wx.EVT_MENU, self.OnHelpFind, id=findID)
- self.Bind(wx.EVT_MENU, self.OnFindNext, id=findnextID)
+ helpItem = menu.Append(-1, '&About\tCtrl-H', 'wxPython RULES!!!')
+ wx.App_SetMacAboutMenuItemId(helpItem.GetId())
+ self.Bind(wx.EVT_MENU, self.OnHelpAbout, helpItem)
+ self.Bind(wx.EVT_MENU, self.OnHelpFind, findItem)
+ self.Bind(wx.EVT_MENU, self.OnFindNext, findnextItem)
self.Bind(wx.EVT_COMMAND_FIND, self.OnFind)
self.Bind(wx.EVT_COMMAND_FIND_NEXT, self.OnFind)
self.Bind(wx.EVT_COMMAND_FIND_CLOSE, self.OnFindClose)
@@ -579,21 +598,6 @@ class wxPythonDemo(wx.Frame):
self.LoadDemoSource('Main.py')
- # Set up a log on the View Log Notebook page
- self.log = wx.TextCtrl(splitter2, -1,
- style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
-
- # Set the wxWindows log target to be this textctrl
- #wx.Log_SetActiveTarget(wx.LogTextCtrl(self.log))
-
- # But instead of the above we want to show how to use our own wx.Log class
- wx.Log_SetActiveTarget(MyLog(self.log))
-
- # for serious debugging
- #wx.Log_SetActiveTarget(wx.LogStderr())
- #wx.Log_SetTraceMask(wx.TraceMessages)
-
-
# add the windows to the splitter and split it.
splitter2.SplitHorizontally(self.nb, self.log, -120)
splitter.SplitVertically(self.tree, splitter2, 180)
@@ -602,7 +606,7 @@ class wxPythonDemo(wx.Frame):
splitter2.SetMinimumPaneSize(20)
- # Make the splitter on the right expand the top wind when resized
+ # Make the splitter on the right expand the top window when resized
def SplitterOnSize(evt):
splitter = evt.GetEventObject()
sz = splitter.GetSize()
@@ -626,7 +630,7 @@ class wxPythonDemo(wx.Frame):
self.tree.EnsureVisible(selectedDemo)
- wx.LogMessage('window handle: %s' % self.GetHandle())
+## wx.LogMessage('window handle: %s' % self.GetHandle())
#---------------------------------------------
@@ -685,7 +689,6 @@ class wxPythonDemo(wx.Frame):
if itemText == self.overviewText:
self.LoadDemoSource('Main.py')
self.SetOverview(self.overviewText, overview)
- self.nb.Refresh();
self.window = None
else:
@@ -704,21 +707,17 @@ class wxPythonDemo(wx.Frame):
wx.EndBusyCursor()
self.tree.Refresh()
- # in case runTest is modal, make sure things look right...
- self.nb.Refresh();
- wx.SafeYield()
-
self.window = module.runTest(self, self.nb, self) ###
if self.window is not None:
self.nb.AddPage(self.window, 'Demo')
self.nb.SetSelection(2)
- self.nb.Refresh() # without this wxMac has troubles showing the just added page
else:
self.ovr.SetPage("")
self.txt.Clear()
self.window = None
+ self.tree.SetFocus()
#---------------------------------------------
@@ -739,6 +738,8 @@ class wxPythonDemo(wx.Frame):
lead = text[:6]
if lead != '' and lead != '':
text = '
'.join(text.split('\n'))
+ if wx.USE_UNICODE:
+ text = text.decode('iso8859_1')
self.ovr.SetPage(text)
self.nb.SetPageText(0, name)
@@ -747,6 +748,15 @@ class wxPythonDemo(wx.Frame):
def OnFileExit(self, *event):
self.Close()
+ def OnToggleRedirect(self, event):
+ app = wx.GetApp()
+ if event.Checked():
+ app.RedirectStdio()
+ print "Print statements and other standard output will now be directed to this window."
+ else:
+ app.RestoreStdio()
+ print "Print statements and other standard output will now be sent to the usual location."
+
def OnHelpAbout(self, event):
from About import MyAboutBox
about = MyAboutBox(self)
@@ -804,8 +814,6 @@ class wxPythonDemo(wx.Frame):
self.dying = True
self.window = None
self.mainmenu = None
- if hasattr(self, "tbicon"):
- del self.tbicon
self.Destroy()
@@ -897,6 +905,7 @@ class MySplashScreen(wx.SplashScreen):
self.Bind(wx.EVT_CLOSE, self.OnClose)
def OnClose(self, evt):
+ self.Hide()
frame = wxPythonDemo(None, -1, "wxPython: (A Demonstration)")
frame.Show()
evt.Skip() # Make sure the default handler runs too...
@@ -909,14 +918,12 @@ class MyApp(wx.App):
the main frame when it is time to do so.
"""
- wx.InitAllImageHandlers()
-
# Normally when using a SplashScreen you would create it, show
# it and then continue on with the applicaiton's
# initialization, finally creating and showing the main
# application window(s). In this case we have nothing else to
# do so we'll delay showing the main frame until later (see
- # OnClose above) so the users can see the SplashScrren effect.
+ # OnClose above) so the users can see the SplashScreen effect.
splash = MySplashScreen()
splash.Show()
@@ -932,7 +939,7 @@ def main():
os.chdir(demoPath)
except:
pass
- app = MyApp(0) #wx.Platform == "__WXMAC__")
+ app = MyApp(0) ##wx.Platform == "__WXMAC__")
app.MainLoop()
@@ -943,13 +950,12 @@ def main():
overview = """
wxPython is a GUI toolkit for the Python programming language. It -allows Python programmers to create programs with a robust, highly -functional graphical user interface, simply and easily. It is -implemented as a Python extension module (native code) that wraps the -popular wxWindows cross -platform GUI library, which is written in C++. +
wxPython is a GUI toolkit for the Python programming +language. It allows Python programmers to create programs with a +robust, highly functional graphical user interface, simply and easily. +It is implemented as a Python extension module (native code) that +wraps the popular wxWindows cross platform GUI library, which is +written in C++.
Like Python and wxWindows, wxPython is Open Source which means that it is free for anyone to use and the source code is