'BitmapFromBuffer',
'RawBitmapAccess',
'DragScroller',
-## 'AlphaDrawing',
'DelayedResult',
'ExpandoTextCtrl',
'ButtonPanel',
'FlatNotebook',
+ 'CustomTreeCtrl',
+ 'AboutBox',
+ 'AnimateCtrl',
+ 'AlphaDrawing',
+ 'GraphicsContext',
+ 'CollapsiblePane',
+ 'ComboCtrl',
+ 'OwnerDrawnComboBox',
+ 'BitmapComboBox',
+ 'I18N',
+ 'Img2PyArtProvider',
]),
# managed windows == things with a (optional) caption you can close
# the common dialogs
('Common Dialogs', [
+ 'AboutBox',
'ColourDialog',
'DirDialog',
'FileDialog',
'ButtonPanel',
'ColourSelect',
'ComboTreeBox',
+ 'CustomTreeCtrl',
'Editor',
'FlatNotebook',
'GenericButtons',
'ActiveX_FlashWindow',
'ActiveX_IEHtmlWindow',
'ActiveX_PDFWindow',
- #'RightTextCtrl', deprecated as we have wxTE_RIGHT now.
+ 'BitmapComboBox',
'Calendar',
'CalendarCtrl',
'CheckListCtrlMixin',
+ 'CollapsiblePane',
+ 'ComboCtrl',
'ContextHelp',
'DatePickerCtrl',
'DynamicSashWindow',
'FloatBar',
'FloatCanvas',
'FoldPanelBar',
- 'GIFAnimationCtrl',
'HtmlWindow',
'HyperLinkCtrl',
'IntCtrl',
'MaskedNumCtrl',
'MediaCtrl',
'MultiSplitterWindow',
+ 'OwnerDrawnComboBox',
'Pickers',
'PyCrust',
'PyPlot',
# Images
('Using Images', [
-## 'AlphaDrawing',
+ 'AlphaDrawing',
+ 'AnimateCtrl',
'ArtProvider',
'BitmapFromBuffer',
'Cursor',
'DragImage',
- 'GIFAnimationCtrl',
'Image',
'ImageAlpha',
'ImageFromStream',
+ 'Img2PyArtProvider',
'Mask',
'RawBitmapAccess',
'Throbber',
# Other stuff
('Miscellaneous', [
-## 'AlphaDrawing',
+ 'AlphaDrawing',
'ColourDB',
##'DialogUnits', # needs more explanations
'DragScroller',
'DrawXXXList',
'FileHistory',
'FontEnumerator',
+ 'GraphicsContext',
'GLCanvas',
+ 'I18N',
'Joystick',
'MimeTypesManager',
'MouseGestures',
if wx.Platform == '__WXMSW__':
self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
'fore:#000000,back:#FFFFFF,face:Courier New,size:9')
+ elif wx.Platform == '__WXMAC__':
+ # TODO: if this looks fine on Linux too, remove the Mac-specific case
+ # and use this whenever OS != MSW.
+ self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
+ 'fore:#000000,back:#FFFFFF,face:Courier')
else:
self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
'fore:#000000,back:#FFFFFF,face:Courier,size:9')
boxInfoGrid = wx.FlexGridSizer(0, 2, 0, 0)
textFlags = wx.ALIGN_RIGHT | wx.LEFT | wx.RIGHT | wx.TOP
boxInfoGrid.Add(wx.StaticText(self, -1, "Type: "), 0, textFlags, 5 )
- boxInfoGrid.Add(wx.StaticText(self, -1, demoError.exception_type) , 0, textFlags, 5 )
+ boxInfoGrid.Add(wx.StaticText(self, -1, str(demoError.exception_type)) , 0, textFlags, 5 )
boxInfoGrid.Add(wx.StaticText(self, -1, "Details: ") , 0, textFlags, 5 )
boxInfoGrid.Add(wx.StaticText(self, -1, demoError.exception_details) , 0, textFlags, 5 )
boxInfoSizer.Add(boxInfoGrid, 0, wx.ALIGN_CENTRE | wx.ALL, 5 )
# Create a TreeCtrl
tID = wx.NewId()
+ leftPanel = wx.Panel(splitter)
+
+ self.filter = wx.TextCtrl(leftPanel)
+ self.filter.Bind(wx.EVT_TEXT, self.RecreateTree)
+
self.treeMap = {}
- self.tree = wx.TreeCtrl(splitter, tID, style =
+ self.tree = wx.TreeCtrl(leftPanel, tID, style =
wx.TR_DEFAULT_STYLE #| wx.TR_HAS_VARIABLE_ROW_HEIGHT
)
- root = self.tree.AddRoot("wxPython Overview")
- firstChild = None
- for item in _treeList:
- child = self.tree.AppendItem(root, item[0])
- if not firstChild: firstChild = child
- for childItem in item[1]:
- theDemo = self.tree.AppendItem(child, childItem)
- self.treeMap[childItem] = theDemo
-
- self.tree.Expand(root)
- self.tree.Expand(firstChild)
+ self.root = self.tree.AddRoot("wxPython Overview")
+ self.RecreateTree()
self.tree.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded, id=tID)
self.tree.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed, id=tID)
self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, id=tID)
self.tree.Bind(wx.EVT_LEFT_DOWN, self.OnTreeLeftDown)
-
+
# Set up a wx.html.HtmlWindow on the Overview Notebook page
# we put it in a panel first because there seems to be a
# refresh bug of some sort (wxGTK) when it is directly in
# Set up a log window
self.log = wx.TextCtrl(splitter2, -1,
style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
+ if wx.Platform == "__WXMAC__":
+ self.log.MacCheckSpelling(False)
# Set the wxWindows log target to be this textctrl
#wx.Log_SetActiveTarget(wx.LogTextCtrl(self.log))
# add the windows to the splitter and split it.
splitter2.SplitHorizontally(self.nb, self.log, -160)
- splitter.SplitVertically(self.tree, splitter2, 200)
+ leftBox = wx.BoxSizer(wx.VERTICAL)
+ leftBox.Add(self.tree, 1, wx.EXPAND)
+ leftBox.Add(wx.StaticText(leftPanel, label = "Filter Demos:"), 0, wx.TOP|wx.LEFT, 5)
+ leftBox.Add(self.filter, 0, wx.EXPAND|wx.ALL, 5)
+ leftPanel.SetSizer(leftBox)
+ splitter.SplitVertically(leftPanel, splitter2, 220)
splitter.SetMinimumPaneSize(120)
splitter2.SetMinimumPaneSize(60)
# select initial items
self.nb.SetSelection(0)
- self.tree.SelectItem(root)
+ self.tree.SelectItem(self.root)
# Load 'Main' module
self.LoadDemo(self.overviewText)
#---------------------------------------------
+
+ def RecreateTree(self, evt=None):
+ self.tree.DeleteAllItems()
+ self.root = self.tree.AddRoot("wxPython Overview")
+ firstChild = None
+ filter = self.filter.GetValue()
+ for category, items in _treeList:
+ if filter:
+ items = [item for item in items if filter.lower() in item.lower()]
+ if items:
+ child = self.tree.AppendItem(self.root, category)
+ if not firstChild: firstChild = child
+ for childItem in items:
+ theDemo = self.tree.AppendItem(child, childItem)
+ self.treeMap[childItem] = theDemo
+
+ self.tree.Expand(self.root)
+ if firstChild:
+ self.tree.Expand(firstChild)
+
+
def WriteText(self, text):
if text[-1:] == '\n':
text = text[:-1]
if self.fc.IsRunning():
self.Raise()
+import wx.lib.mixins.inspect
-class MyApp(wx.App):
+class MyApp(wx.App, wx.lib.mixins.inspect.InspectionMixin):
def OnInit(self):
"""
Create and show the splash screen. It will then create and show
splash = MySplashScreen()
splash.Show()
+ # Setup the InspectionMixin
+ self.Init()
+
return True