X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/305ac48f0abfb991fb173897d035c7ca0a56cc2f..962162620ff8b78f4d25c7f4ccec88ce071dfb2b:/wxPython/demo/Main.py?ds=inline diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index b717b5f12d..ddce684930 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -20,7 +20,8 @@ import images # For debugging ##wx.Trap(); -##print os.getpid(); raw_input("Press a key...") +##print os.getpid(); +##raw_input("Press a key...") #--------------------------------------------------------------------------- @@ -37,6 +38,10 @@ _treeList = [ 'GridBagSizer', 'Cursor', 'PyPlot', + 'ImageAlpha', + 'ActiveX_FlashWindow', + 'ActiveX_IEHtmlWindow', + 'ActiveX_PDFWindow', ]), # managed windows == things with a (optional) caption you can close @@ -66,7 +71,6 @@ _treeList = [ # dialogs from libraries ('More Dialogs', [ - 'ErrorDialogs', 'ImageBrowser', 'MultipleChoiceDialog', 'ScrolledMessageDialog', @@ -74,6 +78,7 @@ _treeList = [ # core controls ('Core Windows/Controls', [ + 'BitmapButton', 'Button', 'CheckBox', 'CheckListBox', @@ -123,6 +128,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 +142,6 @@ _treeList = [ 'FloatBar', 'FloatCanvas', 'HtmlWindow', - 'IEHtmlWin', 'IntCtrl', 'MVCTree', 'MaskedEditControls', @@ -171,7 +178,6 @@ _treeList = [ ('Process and Events', [ 'EventManager', 'KeyEvents', - 'OOR', 'Process', 'PythonEvents', 'Threads', @@ -192,6 +198,7 @@ _treeList = [ 'Cursor', 'DragImage', 'Image', + 'ImageAlpha', 'ImageFromStream', 'Mask', 'Throbber', @@ -205,20 +212,16 @@ _treeList = [ 'FileHistory', 'FontEnumerator', 'Joystick', - 'NewNamespace', 'OGL', 'PrintFramework', 'ShapedWindow', + 'Sound', 'Unicode', - 'Wave', ]), # need libs not coming with the demo ('Objects using an external library', [ - 'ActiveXWrapper_Acrobat', - 'ActiveXWrapper_IE', 'GLCanvas', - #'PlotCanvas', # deprecated, use PyPlot ]), @@ -262,7 +265,7 @@ try: 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 @@ -430,6 +433,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 = "" @@ -461,7 +465,23 @@ class wxPythonDemo(wx.Frame): self.CreateStatusBar(1, wx.ST_SIZEGRIP) splitter = wx.SplitterWindow(self, -1) - splitter2 = wx.SplitterWindow(splitter, -1) + splitter2 = wx.SplitterWindow(splitter, -1) ##, size=(20,20)) + + # 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) @@ -473,10 +493,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 @@ -484,9 +509,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') @@ -496,14 +520,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) @@ -578,21 +602,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) @@ -601,7 +610,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() @@ -684,7 +693,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: @@ -703,21 +711,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() #--------------------------------------------- @@ -746,6 +750,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) @@ -803,8 +816,6 @@ class wxPythonDemo(wx.Frame): self.dying = True self.window = None self.mainmenu = None - if hasattr(self, "tbicon"): - del self.tbicon self.Destroy() @@ -896,6 +907,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... @@ -931,7 +943,7 @@ def main(): os.chdir(demoPath) except: pass - app = MyApp(0) #wx.Platform == "__WXMAC__") + app = MyApp(0) ##wx.Platform == "__WXMAC__") app.MainLoop()