X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c127177f8dc31dbe99764852b8dbcc047d3ad826..0045dee3f4992cfb5226e74338a9b354d32fffbe:/utils/wxPython/demo/Main.py diff --git a/utils/wxPython/demo/Main.py b/utils/wxPython/demo/Main.py index 9b8b451988..175b0c4e15 100644 --- a/utils/wxPython/demo/Main.py +++ b/utils/wxPython/demo/Main.py @@ -23,26 +23,28 @@ _treeList = [ ('Miscellaneous Windows', ['wxGrid', 'wxSashWindow', 'wxScrolledWindow', 'wxSplitterWindow', - 'wxStatusBar', 'wxToolBar', 'wxNotebook']), + 'wxStatusBar', 'wxToolBar', 'wxNotebook', + 'wxHtmlWindow']), ('Common Dialogs', ['wxColourDialog', 'wxDirDialog', 'wxFileDialog', 'wxSingleChoiceDialog', 'wxTextEntryDialog', 'wxFontDialog', 'wxPageSetupDialog', 'wxPrintDialog', - 'wxMessageDialog']), + 'wxMessageDialog', 'wxProgressDialog']), ('Controls', ['wxButton', 'wxCheckBox', 'wxCheckListBox', 'wxChoice', 'wxComboBox', 'wxGauge', 'wxListBox', 'wxListCtrl', 'wxTextCtrl', 'wxTreeCtrl', 'wxSpinButton', 'wxStaticText', 'wxStaticBitmap', 'wxRadioBox', 'wxSlider']), - ('Window Layout', ['wxLayoutConstraints']), + ('Window Layout', ['wxLayoutConstraints', 'Sizers']), - ('Micellaneous', ['wxTimer', 'wxGLCanvas', 'DialogUnits', 'wxImage']), + ('Miscellaneous', ['wxTimer', 'wxGLCanvas', 'DialogUnits', 'wxImage', + 'PrintFramework', 'wxOGL']), - ('wxPython Library', ['Layoutf', 'wxScrolledMessageDialog', + ('wxPython Library', ['Sizers', 'Layoutf', 'wxScrolledMessageDialog', 'wxMultipleChoiceDialog', 'wxPlotCanvas']), - ('Cool Contribs', ['pyTree', 'hangman', 'SlashDot']), + ('Cool Contribs', ['pyTree', 'hangman', 'SlashDot', 'XMLtreeview']), ] @@ -70,55 +72,66 @@ class wxPythonDemo(wxFrame): # Make a File menu self.mainmenu = wxMenuBar() menu = wxMenu() - mID = NewId() + mID = wxNewId() menu.Append(mID, 'E&xit', 'Get the heck outta here!') EVT_MENU(self, mID, self.OnFileExit) self.mainmenu.Append(menu, '&File') + # Make a Demo menu + menu = wxMenu() + for item in _treeList: + submenu = wxMenu() + for childItem in item[1]: + mID = wxNewId() + submenu.Append(mID, childItem) + EVT_MENU(self, mID, self.OnDemoMenu) + menu.AppendMenu(wxNewId(), item[0], submenu) + self.mainmenu.Append(menu, '&Demo') + + # Make a Help menu - mID = NewId() + mID = wxNewId() menu = wxMenu() menu.Append(mID, '&About', 'wxPython RULES!!!') EVT_MENU(self, mID, self.OnHelpAbout) self.mainmenu.Append(menu, '&Help') self.SetMenuBar(self.mainmenu) + # Create a TreeCtrl - tID = NewId() + tID = wxNewId() + self.treeMap = {} self.tree = wxTreeCtrl(splitter, tID) root = self.tree.AddRoot("Overview") for item in _treeList: child = self.tree.AppendItem(root, item[0]) for childItem in item[1]: - self.tree.AppendItem(child, childItem) + theDemo = self.tree.AppendItem(child, childItem) + self.treeMap[childItem] = theDemo + self.tree.Expand(root) EVT_TREE_ITEM_EXPANDED (self.tree, tID, self.OnItemExpanded) EVT_TREE_ITEM_COLLAPSED (self.tree, tID, self.OnItemCollapsed) EVT_TREE_SEL_CHANGED (self.tree, tID, self.OnSelChanged) - # Create a Notebook self.nb = wxNotebook(splitter2, -1) # Set up a TextCtrl on the Overview Notebook page - self.ovr = wxTextCtrl(self.nb, -1, '', wxDefaultPosition, wxDefaultSize, - wxTE_MULTILINE|wxTE_READONLY) + self.ovr = wxTextCtrl(self.nb, -1, style = wxTE_MULTILINE|wxTE_READONLY) self.nb.AddPage(self.ovr, "Overview") # Set up a TextCtrl on the Demo Code Notebook page - self.txt = wxTextCtrl(self.nb, -1, '', wxDefaultPosition, wxDefaultSize, - wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL) + self.txt = wxTextCtrl(self.nb, -1, + style = wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL) + self.txt.SetFont(wxFont(9, wxMODERN, wxNORMAL, wxNORMAL, false)) self.nb.AddPage(self.txt, "Demo Code") - # select initial items - self.nb.SetSelection(0) - self.tree.SelectItem(root) - # Set up a log on the View Log Notebook page - self.log = wxTextCtrl(splitter2, -1, '', wxDefaultPosition, wxDefaultSize, - wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL) + self.log = wxTextCtrl(splitter2, -1, + style = wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL) (w, self.charHeight) = self.log.GetTextExtent('X') #self.WriteText('wxPython Demo Log:\n') @@ -135,13 +148,29 @@ class wxPythonDemo(wxFrame): # make our log window be stdout #sys.stdout = self + # select initial items + self.nb.SetSelection(0) + self.tree.SelectItem(root) + + if len(sys.argv) == 2: + try: + selectedDemo = self.treeMap[sys.argv[1]] + except: + selectedDemo = None + if selectedDemo: + self.tree.SelectItem(selectedDemo) + self.tree.EnsureVisible(selectedDemo) + + #--------------------------------------------- def WriteText(self, text): self.log.WriteText(text) w, h = self.log.GetClientSizeTuple() numLines = h/self.charHeight x, y = self.log.PositionToXY(self.log.GetLastPosition()) - self.log.ShowPosition(self.log.XYToPosition(x, y-numLines+1)) + self.log.ShowPosition(self.log.XYToPosition(x, y-numLines)) + ##self.log.ShowPosition(self.log.GetLastPosition()) + self.log.SetInsertionPointEnd() def write(self, txt): self.WriteText(txt) @@ -175,6 +204,7 @@ class wxPythonDemo(wxFrame): #self.nb.ResizeChildren(); self.nb.Refresh(); #wxYield() + self.window = None else: if os.path.exists(itemText + '.py'): @@ -186,24 +216,30 @@ class wxPythonDemo(wxFrame): self.nb.Refresh(); wxYield() - window = module.runTest(self, self.nb, self) - if window: - self.nb.AddPage(window, 'Demo') + self.window = module.runTest(self, self.nb, self) + if self.window: + self.nb.AddPage(self.window, 'Demo') self.nb.SetSelection(2) self.nb.ResizeChildren(); else: self.ovr.Clear() self.txt.Clear() + self.window = None #--------------------------------------------- # Get the Demo files def GetDemoFile(self, filename): self.txt.Clear() - if not self.txt.LoadFile(filename): + #if not self.txt.LoadFile(filename): + # self.txt.WriteText("Cannot open %s file." % filename) + try: + self.txt.SetValue(open(filename).read()) + except IOError: self.txt.WriteText("Cannot open %s file." % filename) + self.txt.SetInsertionPoint(0) self.txt.ShowPosition(0) @@ -222,13 +258,14 @@ class wxPythonDemo(wxFrame): def OnHelpAbout(self, event): - about = wxMessageDialog(self, - "wxPython is a Python extension module that\n" - "encapsulates the wxWindows GUI classes.\n\n" - "This demo shows off some of the capabilities\n" - "of wxPython.\n\n" - " Developed by Robin Dunn", - "About wxPython", wxOK) + #about = wxMessageDialog(self, + # "wxPython is a Python extension module that\n" + # "encapsulates the wxWindows GUI classes.\n\n" + # "This demo shows off some of the capabilities\n" + # "of wxPython.\n\n" + # " Developed by Robin Dunn", + # "About wxPython", wxOK) + about = MyAboutBox(self) about.ShowModal() about.Destroy() @@ -236,14 +273,66 @@ class wxPythonDemo(wxFrame): #--------------------------------------------- def OnCloseWindow(self, event): self.dying = true + self.window = None self.Destroy() #--------------------------------------------- def OnIdle(self, event): if self.otherWin: self.otherWin.Raise() + self.window = self.otherWin self.otherWin = None + #--------------------------------------------- + def OnDemoMenu(self, event): + print event.GetId(), self.mainmenu.GetLabel(event.GetId()) + try: + selectedDemo = self.treeMap[self.mainmenu.GetLabel(event.GetId())] + except: + selectedDemo = None + if selectedDemo: + self.tree.SelectItem(selectedDemo) + self.tree.EnsureVisible(selectedDemo) + + + +#--------------------------------------------------------------------------- +#--------------------------------------------------------------------------- + +class MyAboutBox(wxDialog): + text = ''' + + +
+ + + +

wxPython %s

+ +

wxPython is a Python extension module that +encapsulates the wxWindows GUI classes.

+ +

This demo shows off some of the capabilities +of wxPython. Select items from the menu or tree control, +sit back and enjoy. Be sure to take a peek at the source code for each +demo item so you can learn how to use the classes yourself.

+ +

wxPython is brought to you by Robin Dunn and
+Total Control Software, copyright 1999.

+ +

Please see license.txt for licensing information.

+
+ + +''' + def __init__(self, parent): + from wxPython.html import * + wxDialog.__init__(self, parent, -1, 'About wxPython') + self.html = wxHtmlWindow(self, -1, wxPoint(5,5), wxSize(400, 350)) + self.html.SetPage(self.text % wx.__version__) + wxButton(self, wxID_OK, 'OK', wxPoint(5, 365)).SetDefault() + self.Fit() + #--------------------------------------------------------------------------- #---------------------------------------------------------------------------