wxPython-zombie 3.1.5.8__cp313-cp313-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1175) hide show
  1. wx/__init__.py +22 -0
  2. wx/__version__.py +9 -0
  3. wx/_adv.cp313-win_amd64.pyd +0 -0
  4. wx/_aui.cp313-win_amd64.pyd +0 -0
  5. wx/_core.cp313-win_amd64.pyd +0 -0
  6. wx/_dataview.cp313-win_amd64.pyd +0 -0
  7. wx/_glcanvas.cp313-win_amd64.pyd +0 -0
  8. wx/_grid.cp313-win_amd64.pyd +0 -0
  9. wx/_html.cp313-win_amd64.pyd +0 -0
  10. wx/_html2.cp313-win_amd64.pyd +0 -0
  11. wx/_media.cp313-win_amd64.pyd +0 -0
  12. wx/_msw.cp313-win_amd64.pyd +0 -0
  13. wx/_propgrid.cp313-win_amd64.pyd +0 -0
  14. wx/_ribbon.cp313-win_amd64.pyd +0 -0
  15. wx/_richtext.cp313-win_amd64.pyd +0 -0
  16. wx/_stc.cp313-win_amd64.pyd +0 -0
  17. wx/_xml.cp313-win_amd64.pyd +0 -0
  18. wx/_xrc.cp313-win_amd64.pyd +0 -0
  19. wx/adv.py +124 -0
  20. wx/adv.pyi +5182 -0
  21. wx/aui.py +77 -0
  22. wx/aui.pyi +3655 -0
  23. wx/core.py +3540 -0
  24. wx/core.pyi +50592 -0
  25. wx/dataview.py +173 -0
  26. wx/dataview.pyi +3491 -0
  27. wx/demo/AUI_DockingWindowMgr.py +1154 -0
  28. wx/demo/AUI_MDI.py +117 -0
  29. wx/demo/AUI_Notebook.py +58 -0
  30. wx/demo/About.py +75 -0
  31. wx/demo/AboutBox.py +75 -0
  32. wx/demo/ActiveXWrapper_Acrobat.py +132 -0
  33. wx/demo/ActiveXWrapper_IE.py +187 -0
  34. wx/demo/ActiveX_FlashWindow.py +107 -0
  35. wx/demo/ActiveX_IEHtmlWindow.py +242 -0
  36. wx/demo/ActiveX_PDFWindow.py +204 -0
  37. wx/demo/ActivityIndicator.py +80 -0
  38. wx/demo/AddPrivateFont.py +116 -0
  39. wx/demo/AdjustChannels.py +178 -0
  40. wx/demo/AlphaDrawing.py +77 -0
  41. wx/demo/AnalogClock.py +144 -0
  42. wx/demo/AnimationCtrl.py +104 -0
  43. wx/demo/ArtProvider.py +893 -0
  44. wx/demo/BannerWindow.py +1 -0
  45. wx/demo/BitmapButton.py +87 -0
  46. wx/demo/BitmapComboBox.py +63 -0
  47. wx/demo/BitmapFromBuffer.py +140 -0
  48. wx/demo/Button.py +77 -0
  49. wx/demo/Cairo.py +197 -0
  50. wx/demo/Cairo_Snippets.py +135 -0
  51. wx/demo/Calendar.py +660 -0
  52. wx/demo/CalendarCtrl.py +122 -0
  53. wx/demo/CheckBox.py +74 -0
  54. wx/demo/CheckListBox.py +79 -0
  55. wx/demo/CheckListCtrl.py +99 -0
  56. wx/demo/Choice.py +55 -0
  57. wx/demo/Choicebook.py +80 -0
  58. wx/demo/CollapsibleHeaderCtrl.py +85 -0
  59. wx/demo/CollapsiblePane.py +126 -0
  60. wx/demo/ColorPanel.py +19 -0
  61. wx/demo/ColourDB.py +203 -0
  62. wx/demo/ColourDialog.py +76 -0
  63. wx/demo/ColourSelect.py +119 -0
  64. wx/demo/ComboBox.py +111 -0
  65. wx/demo/ComboCtrl.py +153 -0
  66. wx/demo/ComboTreeBox.py +71 -0
  67. wx/demo/CommandLinkButton.py +50 -0
  68. wx/demo/ContextHelp.py +112 -0
  69. wx/demo/Cursor.py +336 -0
  70. wx/demo/CustomDragAndDrop.py +353 -0
  71. wx/demo/DVC_CustomRenderer.py +204 -0
  72. wx/demo/DVC_DataViewModel.py +365 -0
  73. wx/demo/DVC_IndexListModel.py +257 -0
  74. wx/demo/DVC_ListCtrl.py +69 -0
  75. wx/demo/DVC_TreeCtrl.py +76 -0
  76. wx/demo/DatePickerCtrl.py +68 -0
  77. wx/demo/DelayedResult.py +239 -0
  78. wx/demo/Dialog.py +169 -0
  79. wx/demo/DialogUnits.py +128 -0
  80. wx/demo/DirDialog.py +58 -0
  81. wx/demo/DragAndDrop.py +265 -0
  82. wx/demo/DragImage.py +316 -0
  83. wx/demo/DragScroller.py +59 -0
  84. wx/demo/DrawXXXList.py +436 -0
  85. wx/demo/DynamicSashWindow.py +177 -0
  86. wx/demo/EditableListBox.py +101 -0
  87. wx/demo/Editor.py +70 -0
  88. wx/demo/EventManager.py +291 -0
  89. wx/demo/ExpandoTextCtrl.py +164 -0
  90. wx/demo/FancyText.py +83 -0
  91. wx/demo/FileBrowseButton.py +100 -0
  92. wx/demo/FileCtrl.py +97 -0
  93. wx/demo/FileDialog.py +144 -0
  94. wx/demo/FileHistory.py +140 -0
  95. wx/demo/FindReplaceDialog.py +123 -0
  96. wx/demo/FloatCanvas.py +1959 -0
  97. wx/demo/FontDialog.py +142 -0
  98. wx/demo/FontEnumerator.py +82 -0
  99. wx/demo/Frame.py +85 -0
  100. wx/demo/GLCanvas.py +371 -0
  101. wx/demo/Gauge.py +66 -0
  102. wx/demo/GenericButtons.py +185 -0
  103. wx/demo/GenericCheckBox.py +65 -0
  104. wx/demo/GenericDirCtrl.py +74 -0
  105. wx/demo/GetMouseState.py +159 -0
  106. wx/demo/GraphicsContext.py +236 -0
  107. wx/demo/GraphicsGradient.py +281 -0
  108. wx/demo/Grid.py +95 -0
  109. wx/demo/GridBagSizer.py +170 -0
  110. wx/demo/GridCustEditor.py +247 -0
  111. wx/demo/GridCustTable.py +170 -0
  112. wx/demo/GridDragAndDrop.py +102 -0
  113. wx/demo/GridDragable.py +206 -0
  114. wx/demo/GridEnterHandler.py +66 -0
  115. wx/demo/GridHugeTable.py +89 -0
  116. wx/demo/GridLabelRenderer.py +114 -0
  117. wx/demo/GridSimple.py +270 -0
  118. wx/demo/GridStdEdRend.py +186 -0
  119. wx/demo/Grid_MegaExample.py +490 -0
  120. wx/demo/HTML2_WebView.py +183 -0
  121. wx/demo/HtmlWindow.py +232 -0
  122. wx/demo/I18N.py +237 -0
  123. wx/demo/Image.py +338 -0
  124. wx/demo/ImageAlpha.py +87 -0
  125. wx/demo/ImageBrowser.py +70 -0
  126. wx/demo/ImageFromStream.py +49 -0
  127. wx/demo/Img2PyArtProvider.py +99 -0
  128. wx/demo/InfoBar.py +127 -0
  129. wx/demo/IntCtrl.py +343 -0
  130. wx/demo/ItemsPicker.py +108 -0
  131. wx/demo/Joystick.py +1083 -0
  132. wx/demo/KeyEvents.py +428 -0
  133. wx/demo/LEDNumberCtrl.py +121 -0
  134. wx/demo/LayoutAnchors.py +258 -0
  135. wx/demo/LayoutConstraints.py +149 -0
  136. wx/demo/Layoutf.py +69 -0
  137. wx/demo/ListBox.py +164 -0
  138. wx/demo/ListCtrl.py +538 -0
  139. wx/demo/ListCtrl_edit.py +155 -0
  140. wx/demo/ListCtrl_virtual.py +145 -0
  141. wx/demo/Listbook.py +104 -0
  142. wx/demo/MDIDemo.py +86 -0
  143. wx/demo/MDISashDemo.py +152 -0
  144. wx/demo/MDIWindows.py +66 -0
  145. wx/demo/Main.py +2768 -0
  146. wx/demo/Mask.py +137 -0
  147. wx/demo/MaskedEditControls.py +648 -0
  148. wx/demo/MaskedNumCtrl.py +359 -0
  149. wx/demo/MediaCtrl.py +190 -0
  150. wx/demo/Menu.py +322 -0
  151. wx/demo/MessageDialog.py +54 -0
  152. wx/demo/MimeTypesManager.py +354 -0
  153. wx/demo/MiniFrame.py +67 -0
  154. wx/demo/MouseGestures.py +198 -0
  155. wx/demo/MultiChoiceDialog.py +59 -0
  156. wx/demo/MultiSash.py +95 -0
  157. wx/demo/MultiSplitterWindow.py +168 -0
  158. wx/demo/MultipleChoiceDialog.py +101 -0
  159. wx/demo/Notebook.py +134 -0
  160. wx/demo/NotificationMessage.py +61 -0
  161. wx/demo/OGL.py +433 -0
  162. wx/demo/Overlay.py +209 -0
  163. wx/demo/OwnerDrawnComboBox.py +152 -0
  164. wx/demo/PDFViewer.py +109 -0
  165. wx/demo/PageSetupDialog.py +70 -0
  166. wx/demo/PenAndBrushStyles.py +208 -0
  167. wx/demo/Pickers.py +120 -0
  168. wx/demo/PlateButton.py +430 -0
  169. wx/demo/PopupControl.py +99 -0
  170. wx/demo/PopupMenu.py +156 -0
  171. wx/demo/PopupWindow.py +227 -0
  172. wx/demo/PrintDialog.py +60 -0
  173. wx/demo/PrintFramework.py +227 -0
  174. wx/demo/Process.py +168 -0
  175. wx/demo/ProgressDialog.py +87 -0
  176. wx/demo/PropertyGrid.py +1045 -0
  177. wx/demo/PropertySheetDialog.py +231 -0
  178. wx/demo/PseudoDC.py +350 -0
  179. wx/demo/PyColourChooser.py +60 -0
  180. wx/demo/PyCrust.py +21 -0
  181. wx/demo/PyPlot.py +83 -0
  182. wx/demo/PyShell.py +22 -0
  183. wx/demo/PythonEvents.py +109 -0
  184. wx/demo/README.txt +7 -0
  185. wx/demo/RadioBox.py +67 -0
  186. wx/demo/RadioButton.py +127 -0
  187. wx/demo/RawBitmapAccess.py +208 -0
  188. wx/demo/RearrangeDialog.py +160 -0
  189. wx/demo/RendererNative.py +170 -0
  190. wx/demo/ResizeWidget.py +76 -0
  191. wx/demo/RichMessageDialog.py +85 -0
  192. wx/demo/RichTextCtrl.py +732 -0
  193. wx/demo/RichToolTip.py +145 -0
  194. wx/demo/SVGImage_Bitmap.py +130 -0
  195. wx/demo/SVGImage_Render.py +138 -0
  196. wx/demo/SashWindow.py +151 -0
  197. wx/demo/ScrolledMessageDialog.py +52 -0
  198. wx/demo/ScrolledPanel.py +124 -0
  199. wx/demo/ScrolledWindow.py +260 -0
  200. wx/demo/SearchCtrl.py +115 -0
  201. wx/demo/ShapedWindow.py +145 -0
  202. wx/demo/Simplebook.py +202 -0
  203. wx/demo/SingleChoiceDialog.py +56 -0
  204. wx/demo/SizedControls.py +433 -0
  205. wx/demo/Sizers.py +609 -0
  206. wx/demo/Slider.py +52 -0
  207. wx/demo/Sound.py +95 -0
  208. wx/demo/SpinButton.py +63 -0
  209. wx/demo/SpinCtrl.py +56 -0
  210. wx/demo/SpinCtrlDouble.py +42 -0
  211. wx/demo/SplitTree.py +146 -0
  212. wx/demo/SplitterWindow.py +62 -0
  213. wx/demo/StandardPaths.py +113 -0
  214. wx/demo/StaticBitmap.py +55 -0
  215. wx/demo/StaticBox.py +62 -0
  216. wx/demo/StaticText.py +69 -0
  217. wx/demo/StatusBar.py +144 -0
  218. wx/demo/StockButtons.py +113 -0
  219. wx/demo/StyledTextCtrl_1.py +303 -0
  220. wx/demo/StyledTextCtrl_2.py +410 -0
  221. wx/demo/SystemSettings.py +333 -0
  222. wx/demo/TablePrint.py +215 -0
  223. wx/demo/TestTable.txt +38 -0
  224. wx/demo/TextCtrl.py +187 -0
  225. wx/demo/TextEntryDialog.py +57 -0
  226. wx/demo/Threads.py +258 -0
  227. wx/demo/Throbber.py +250 -0
  228. wx/demo/Ticker.py +147 -0
  229. wx/demo/TimeCtrl.py +240 -0
  230. wx/demo/TimePickerCtrl.py +60 -0
  231. wx/demo/Timer.py +275 -0
  232. wx/demo/ToggleButton.py +54 -0
  233. wx/demo/ToolBar.py +249 -0
  234. wx/demo/ToolTip.py +71 -0
  235. wx/demo/Toolbook.py +111 -0
  236. wx/demo/TreeCtrl.py +199 -0
  237. wx/demo/TreeListCtrl.py +121 -0
  238. wx/demo/TreeMixin.py +269 -0
  239. wx/demo/Treebook.py +117 -0
  240. wx/demo/UIActionSimulator.py +151 -0
  241. wx/demo/URLDragAndDrop.py +130 -0
  242. wx/demo/Unicode.py +146 -0
  243. wx/demo/VListBox.py +176 -0
  244. wx/demo/Validator.py +237 -0
  245. wx/demo/Wizard.py +248 -0
  246. wx/demo/WrapSizer.py +115 -0
  247. wx/demo/XmlResource.py +80 -0
  248. wx/demo/XmlResourceHandler.py +199 -0
  249. wx/demo/XmlResourceSubclass.py +119 -0
  250. wx/demo/__init__.py +9 -0
  251. wx/demo/agw/AGWInfoBar.py +175 -0
  252. wx/demo/agw/AUI.py +3058 -0
  253. wx/demo/agw/AdvancedSplash.py +59 -0
  254. wx/demo/agw/AquaButton.py +146 -0
  255. wx/demo/agw/BalloonTip.py +378 -0
  256. wx/demo/agw/ButtonPanel.py +890 -0
  257. wx/demo/agw/CubeColourDialog.py +83 -0
  258. wx/demo/agw/CustomTreeCtrl.py +2167 -0
  259. wx/demo/agw/Example1 +67 -0
  260. wx/demo/agw/Example2 +49 -0
  261. wx/demo/agw/FlatMenu.py +876 -0
  262. wx/demo/agw/FlatNotebook.py +994 -0
  263. wx/demo/agw/FloatSpin.py +475 -0
  264. wx/demo/agw/FoldPanelBar.py +953 -0
  265. wx/demo/agw/FourWaySplitter.py +300 -0
  266. wx/demo/agw/GenericMessageDialog.py +207 -0
  267. wx/demo/agw/GradientButton.py +156 -0
  268. wx/demo/agw/HyperLinkCtrl.py +144 -0
  269. wx/demo/agw/HyperTreeList.py +2660 -0
  270. wx/demo/agw/KnobCtrl.py +186 -0
  271. wx/demo/agw/LabelBook.py +567 -0
  272. wx/demo/agw/MacLargeDemo.py +360 -0
  273. wx/demo/agw/MultiDirDialog.py +117 -0
  274. wx/demo/agw/PeakMeter.py +194 -0
  275. wx/demo/agw/PersistentControls.py +589 -0
  276. wx/demo/agw/PieCtrl.py +206 -0
  277. wx/demo/agw/PyBusyInfo.py +64 -0
  278. wx/demo/agw/PyCollapsiblePane.py +308 -0
  279. wx/demo/agw/PyGauge.py +162 -0
  280. wx/demo/agw/PyProgress.py +155 -0
  281. wx/demo/agw/RibbonBar.py +925 -0
  282. wx/demo/agw/RulerCtrl.py +454 -0
  283. wx/demo/agw/ScrolledThumbnail.py +128 -0
  284. wx/demo/agw/ShapedButton.py +603 -0
  285. wx/demo/agw/ShortcutEditor.py +397 -0
  286. wx/demo/agw/SpeedMeter.py +668 -0
  287. wx/demo/agw/SuperToolTip.py +396 -0
  288. wx/demo/agw/ThumbDemoConfig.py +603 -0
  289. wx/demo/agw/ThumbnailCtrl.py +149 -0
  290. wx/demo/agw/ToasterBox.py +410 -0
  291. wx/demo/agw/UltimateListCtrl.py +80 -0
  292. wx/demo/agw/UltimateListIconDemo.py +908 -0
  293. wx/demo/agw/UltimateListListDemo.py +124 -0
  294. wx/demo/agw/UltimateReportDemo.py +1146 -0
  295. wx/demo/agw/UltimateVirtualDemo.py +207 -0
  296. wx/demo/agw/Windows7Explorer_Contents.py +368 -0
  297. wx/demo/agw/XLSGrid.py +238 -0
  298. wx/demo/agw/ZoomBar.py +230 -0
  299. wx/demo/agw/__demo__.py +183 -0
  300. wx/demo/agw/bitmaps/Explorer96.png +0 -0
  301. wx/demo/agw/bitmaps/Explorer96Flip40.png +0 -0
  302. wx/demo/agw/bitmaps/Folder96.png +0 -0
  303. wx/demo/agw/bitmaps/Folder96Flip40.png +0 -0
  304. wx/demo/agw/bitmaps/Monitor96.png +0 -0
  305. wx/demo/agw/bitmaps/Monitor96Flip40.png +0 -0
  306. wx/demo/agw/bitmaps/Music96.png +0 -0
  307. wx/demo/agw/bitmaps/Music96Flip40.png +0 -0
  308. wx/demo/agw/bitmaps/Photo96.png +0 -0
  309. wx/demo/agw/bitmaps/Photo96Flip40.png +0 -0
  310. wx/demo/agw/bitmaps/Search96.png +0 -0
  311. wx/demo/agw/bitmaps/Search96Flip40.png +0 -0
  312. wx/demo/agw/bitmaps/Wizard96.png +0 -0
  313. wx/demo/agw/bitmaps/Wizard96Flip40.png +0 -0
  314. wx/demo/agw/bitmaps/advancedsplash.png +0 -0
  315. wx/demo/agw/bitmaps/aquabutton.png +0 -0
  316. wx/demo/agw/bitmaps/aquachecked.ico +0 -0
  317. wx/demo/agw/bitmaps/aquaflagged.ico +0 -0
  318. wx/demo/agw/bitmaps/aquanotchecked.ico +0 -0
  319. wx/demo/agw/bitmaps/aquanotflagged.ico +0 -0
  320. wx/demo/agw/bitmaps/canada.gif +0 -0
  321. wx/demo/agw/bitmaps/checked.ico +0 -0
  322. wx/demo/agw/bitmaps/columns.png +0 -0
  323. wx/demo/agw/bitmaps/contexthelp-16.png +0 -0
  324. wx/demo/agw/bitmaps/contexthelp.png +0 -0
  325. wx/demo/agw/bitmaps/copy.png +0 -0
  326. wx/demo/agw/bitmaps/cut.png +0 -0
  327. wx/demo/agw/bitmaps/editcopy.png +0 -0
  328. wx/demo/agw/bitmaps/editcut.png +0 -0
  329. wx/demo/agw/bitmaps/editpaste.png +0 -0
  330. wx/demo/agw/bitmaps/empty_icon.png +0 -0
  331. wx/demo/agw/bitmaps/exit-16.png +0 -0
  332. wx/demo/agw/bitmaps/exit.ico +0 -0
  333. wx/demo/agw/bitmaps/ffwd.png +0 -0
  334. wx/demo/agw/bitmaps/ffwddisabled.png +0 -0
  335. wx/demo/agw/bitmaps/field-16.png +0 -0
  336. wx/demo/agw/bitmaps/filenew.png +0 -0
  337. wx/demo/agw/bitmaps/fileopen.png +0 -0
  338. wx/demo/agw/bitmaps/filesave.png +0 -0
  339. wx/demo/agw/bitmaps/flagged.ico +0 -0
  340. wx/demo/agw/bitmaps/folder.png +0 -0
  341. wx/demo/agw/bitmaps/folder_new.png +0 -0
  342. wx/demo/agw/bitmaps/ghost.png +0 -0
  343. wx/demo/agw/bitmaps/gradientbutton.png +0 -0
  344. wx/demo/agw/bitmaps/help-16.png +0 -0
  345. wx/demo/agw/bitmaps/help.ico +0 -0
  346. wx/demo/agw/bitmaps/italy.gif +0 -0
  347. wx/demo/agw/bitmaps/lbadd.png +0 -0
  348. wx/demo/agw/bitmaps/lbcharge.png +0 -0
  349. wx/demo/agw/bitmaps/lbdecrypted.png +0 -0
  350. wx/demo/agw/bitmaps/lbnews.png +0 -0
  351. wx/demo/agw/bitmaps/lbroll.png +0 -0
  352. wx/demo/agw/bitmaps/minus1.ico +0 -0
  353. wx/demo/agw/bitmaps/minus2.ico +0 -0
  354. wx/demo/agw/bitmaps/minus3.ico +0 -0
  355. wx/demo/agw/bitmaps/minus4.ico +0 -0
  356. wx/demo/agw/bitmaps/minus5.ico +0 -0
  357. wx/demo/agw/bitmaps/month-16.png +0 -0
  358. wx/demo/agw/bitmaps/new_file.png +0 -0
  359. wx/demo/agw/bitmaps/new_folder.png +0 -0
  360. wx/demo/agw/bitmaps/notchecked.ico +0 -0
  361. wx/demo/agw/bitmaps/notflagged.ico +0 -0
  362. wx/demo/agw/bitmaps/ok-16.png +0 -0
  363. wx/demo/agw/bitmaps/open_folder.png +0 -0
  364. wx/demo/agw/bitmaps/paste.png +0 -0
  365. wx/demo/agw/bitmaps/pause.png +0 -0
  366. wx/demo/agw/bitmaps/pausedisabled.png +0 -0
  367. wx/demo/agw/bitmaps/play.png +0 -0
  368. wx/demo/agw/bitmaps/playdisabled.png +0 -0
  369. wx/demo/agw/bitmaps/plus1.ico +0 -0
  370. wx/demo/agw/bitmaps/plus2.ico +0 -0
  371. wx/demo/agw/bitmaps/plus3.ico +0 -0
  372. wx/demo/agw/bitmaps/plus4.ico +0 -0
  373. wx/demo/agw/bitmaps/plus5.ico +0 -0
  374. wx/demo/agw/bitmaps/record.png +0 -0
  375. wx/demo/agw/bitmaps/recorddisabled.png +0 -0
  376. wx/demo/agw/bitmaps/recording.gif +0 -0
  377. wx/demo/agw/bitmaps/rewind.png +0 -0
  378. wx/demo/agw/bitmaps/rewinddisabled.png +0 -0
  379. wx/demo/agw/bitmaps/round.png +0 -0
  380. wx/demo/agw/bitmaps/save.png +0 -0
  381. wx/demo/agw/bitmaps/separator.gif +0 -0
  382. wx/demo/agw/bitmaps/separatorflip.png +0 -0
  383. wx/demo/agw/bitmaps/smfuel.ico +0 -0
  384. wx/demo/agw/bitmaps/smpi.ico +0 -0
  385. wx/demo/agw/bitmaps/smtemp.ico +0 -0
  386. wx/demo/agw/bitmaps/stop.png +0 -0
  387. wx/demo/agw/bitmaps/stopdisabled.png +0 -0
  388. wx/demo/agw/bitmaps/sttbutton.png +0 -0
  389. wx/demo/agw/bitmaps/sttfont.png +0 -0
  390. wx/demo/agw/bitmaps/sttheader.png +0 -0
  391. wx/demo/agw/bitmaps/stthelp.png +0 -0
  392. wx/demo/agw/bitmaps/view1.png +0 -0
  393. wx/demo/agw/bitmaps/view2.png +0 -0
  394. wx/demo/agw/bitmaps/view_choose.png +0 -0
  395. wx/demo/agw/bitmaps/view_detailed.png +0 -0
  396. wx/demo/agw/bitmaps/view_icon.png +0 -0
  397. wx/demo/agw/bitmaps/view_multicolumn.png +0 -0
  398. wx/demo/agw/bitmaps/viewmag-16.png +0 -0
  399. wx/demo/agw/bitmaps/viewmag-m-16.png +0 -0
  400. wx/demo/agw/bitmaps/viewmag-p-16.png +0 -0
  401. wx/demo/agw/bitmaps/viewmagfit-16.png +0 -0
  402. wx/demo/agw/data/Example_1.xls +0 -0
  403. wx/demo/agw/images.py +6714 -0
  404. wx/demo/bitmaps/AG00028_.gif +0 -0
  405. wx/demo/bitmaps/AG00039_.gif +0 -0
  406. wx/demo/bitmaps/AG00178_.gif +0 -0
  407. wx/demo/bitmaps/AG00183_.gif +0 -0
  408. wx/demo/bitmaps/AG00185_.gif +0 -0
  409. wx/demo/bitmaps/BD13656_.gif +0 -0
  410. wx/demo/bitmaps/advancedsplash.png +0 -0
  411. wx/demo/bitmaps/aquabutton.png +0 -0
  412. wx/demo/bitmaps/aquachecked.ico +0 -0
  413. wx/demo/bitmaps/aquaflagged.ico +0 -0
  414. wx/demo/bitmaps/aquanotchecked.ico +0 -0
  415. wx/demo/bitmaps/aquanotflagged.ico +0 -0
  416. wx/demo/bitmaps/canada.gif +0 -0
  417. wx/demo/bitmaps/checked.ico +0 -0
  418. wx/demo/bitmaps/columns.png +0 -0
  419. wx/demo/bitmaps/contexthelp-16.png +0 -0
  420. wx/demo/bitmaps/contexthelp.png +0 -0
  421. wx/demo/bitmaps/copy.png +0 -0
  422. wx/demo/bitmaps/cropshot24x20.png +0 -0
  423. wx/demo/bitmaps/cut.png +0 -0
  424. wx/demo/bitmaps/editcopy.png +0 -0
  425. wx/demo/bitmaps/editcut.png +0 -0
  426. wx/demo/bitmaps/editpaste.png +0 -0
  427. wx/demo/bitmaps/exit-16.png +0 -0
  428. wx/demo/bitmaps/exit.ico +0 -0
  429. wx/demo/bitmaps/ffwd.png +0 -0
  430. wx/demo/bitmaps/ffwddisabled.png +0 -0
  431. wx/demo/bitmaps/field-16.png +0 -0
  432. wx/demo/bitmaps/filenew.png +0 -0
  433. wx/demo/bitmaps/fileopen.png +0 -0
  434. wx/demo/bitmaps/filesave.png +0 -0
  435. wx/demo/bitmaps/flagged.ico +0 -0
  436. wx/demo/bitmaps/folder_new.png +0 -0
  437. wx/demo/bitmaps/ghost.png +0 -0
  438. wx/demo/bitmaps/gradientbutton.png +0 -0
  439. wx/demo/bitmaps/help-16.png +0 -0
  440. wx/demo/bitmaps/help.ico +0 -0
  441. wx/demo/bitmaps/honeycomb300.png +0 -0
  442. wx/demo/bitmaps/image.bmp +0 -0
  443. wx/demo/bitmaps/image.gif +0 -0
  444. wx/demo/bitmaps/image.ico +0 -0
  445. wx/demo/bitmaps/image.jpg +0 -0
  446. wx/demo/bitmaps/image.png +0 -0
  447. wx/demo/bitmaps/image.tif +0 -0
  448. wx/demo/bitmaps/italy.gif +0 -0
  449. wx/demo/bitmaps/lbadd.png +0 -0
  450. wx/demo/bitmaps/lbcharge.png +0 -0
  451. wx/demo/bitmaps/lbdecrypted.png +0 -0
  452. wx/demo/bitmaps/lbnews.png +0 -0
  453. wx/demo/bitmaps/lbroll.png +0 -0
  454. wx/demo/bitmaps/minus1.ico +0 -0
  455. wx/demo/bitmaps/minus2.ico +0 -0
  456. wx/demo/bitmaps/minus3.ico +0 -0
  457. wx/demo/bitmaps/minus4.ico +0 -0
  458. wx/demo/bitmaps/minus5.ico +0 -0
  459. wx/demo/bitmaps/month-16.png +0 -0
  460. wx/demo/bitmaps/new_file.png +0 -0
  461. wx/demo/bitmaps/new_folder.png +0 -0
  462. wx/demo/bitmaps/notchecked.ico +0 -0
  463. wx/demo/bitmaps/notflagged.ico +0 -0
  464. wx/demo/bitmaps/ok-16.png +0 -0
  465. wx/demo/bitmaps/open_folder.png +0 -0
  466. wx/demo/bitmaps/paste.png +0 -0
  467. wx/demo/bitmaps/pause.png +0 -0
  468. wx/demo/bitmaps/pausedisabled.png +0 -0
  469. wx/demo/bitmaps/phoenix_title.png +0 -0
  470. wx/demo/bitmaps/phoenix_top.png +0 -0
  471. wx/demo/bitmaps/play.png +0 -0
  472. wx/demo/bitmaps/playdisabled.png +0 -0
  473. wx/demo/bitmaps/plus1.ico +0 -0
  474. wx/demo/bitmaps/plus2.ico +0 -0
  475. wx/demo/bitmaps/plus3.ico +0 -0
  476. wx/demo/bitmaps/plus4.ico +0 -0
  477. wx/demo/bitmaps/plus5.ico +0 -0
  478. wx/demo/bitmaps/record.png +0 -0
  479. wx/demo/bitmaps/recorddisabled.png +0 -0
  480. wx/demo/bitmaps/rewind.png +0 -0
  481. wx/demo/bitmaps/rewinddisabled.png +0 -0
  482. wx/demo/bitmaps/round.png +0 -0
  483. wx/demo/bitmaps/save.png +0 -0
  484. wx/demo/bitmaps/smfuel.ico +0 -0
  485. wx/demo/bitmaps/smpi.ico +0 -0
  486. wx/demo/bitmaps/smtemp.ico +0 -0
  487. wx/demo/bitmaps/snakey_render.png +0 -0
  488. wx/demo/bitmaps/splash.png +0 -0
  489. wx/demo/bitmaps/stop.png +0 -0
  490. wx/demo/bitmaps/stopdisabled.png +0 -0
  491. wx/demo/bitmaps/sttbutton.png +0 -0
  492. wx/demo/bitmaps/sttfont.png +0 -0
  493. wx/demo/bitmaps/sttheader.png +0 -0
  494. wx/demo/bitmaps/stthelp.png +0 -0
  495. wx/demo/bitmaps/toucan.png +0 -0
  496. wx/demo/bitmaps/view1.png +0 -0
  497. wx/demo/bitmaps/view2.png +0 -0
  498. wx/demo/bitmaps/view_choose.png +0 -0
  499. wx/demo/bitmaps/view_detailed.png +0 -0
  500. wx/demo/bitmaps/view_icon.png +0 -0
  501. wx/demo/bitmaps/view_multicolumn.png +0 -0
  502. wx/demo/bitmaps/viewmag-16.png +0 -0
  503. wx/demo/bitmaps/viewmag-m-16.png +0 -0
  504. wx/demo/bitmaps/viewmag-p-16.png +0 -0
  505. wx/demo/bitmaps/viewmagfit-16.png +0 -0
  506. wx/demo/bmp_source/001.png +0 -0
  507. wx/demo/bmp_source/002.png +0 -0
  508. wx/demo/bmp_source/003.png +0 -0
  509. wx/demo/bmp_source/004.png +0 -0
  510. wx/demo/bmp_source/005.png +0 -0
  511. wx/demo/bmp_source/006.png +0 -0
  512. wx/demo/bmp_source/007.png +0 -0
  513. wx/demo/bmp_source/008.png +0 -0
  514. wx/demo/bmp_source/009.png +0 -0
  515. wx/demo/bmp_source/010.png +0 -0
  516. wx/demo/bmp_source/011.png +0 -0
  517. wx/demo/bmp_source/012.png +0 -0
  518. wx/demo/bmp_source/013.png +0 -0
  519. wx/demo/bmp_source/014.png +0 -0
  520. wx/demo/bmp_source/015.png +0 -0
  521. wx/demo/bmp_source/016.png +0 -0
  522. wx/demo/bmp_source/017.png +0 -0
  523. wx/demo/bmp_source/018.png +0 -0
  524. wx/demo/bmp_source/019.png +0 -0
  525. wx/demo/bmp_source/020.png +0 -0
  526. wx/demo/bmp_source/021.png +0 -0
  527. wx/demo/bmp_source/022.png +0 -0
  528. wx/demo/bmp_source/023.png +0 -0
  529. wx/demo/bmp_source/024.png +0 -0
  530. wx/demo/bmp_source/025.png +0 -0
  531. wx/demo/bmp_source/026.png +0 -0
  532. wx/demo/bmp_source/027.png +0 -0
  533. wx/demo/bmp_source/028.png +0 -0
  534. wx/demo/bmp_source/029.png +0 -0
  535. wx/demo/bmp_source/030.png +0 -0
  536. wx/demo/bmp_source/DbDec.bmp +0 -0
  537. wx/demo/bmp_source/DbInc.bmp +0 -0
  538. wx/demo/bmp_source/Dec.bmp +0 -0
  539. wx/demo/bmp_source/FRM_0.png +0 -0
  540. wx/demo/bmp_source/FRM_1.png +0 -0
  541. wx/demo/bmp_source/FRM_2.png +0 -0
  542. wx/demo/bmp_source/FRM_3.png +0 -0
  543. wx/demo/bmp_source/FRM_4.png +0 -0
  544. wx/demo/bmp_source/FRM_5.png +0 -0
  545. wx/demo/bmp_source/FRM_6.png +0 -0
  546. wx/demo/bmp_source/FRM_7.png +0 -0
  547. wx/demo/bmp_source/FRM_8.png +0 -0
  548. wx/demo/bmp_source/GridBG.gif +0 -0
  549. wx/demo/bmp_source/Inc.bmp +0 -0
  550. wx/demo/bmp_source/LB01.png +0 -0
  551. wx/demo/bmp_source/LB02.png +0 -0
  552. wx/demo/bmp_source/LB03.png +0 -0
  553. wx/demo/bmp_source/LB04.png +0 -0
  554. wx/demo/bmp_source/LB05.png +0 -0
  555. wx/demo/bmp_source/LB06.png +0 -0
  556. wx/demo/bmp_source/LB07.png +0 -0
  557. wx/demo/bmp_source/LB08.png +0 -0
  558. wx/demo/bmp_source/LB09.png +0 -0
  559. wx/demo/bmp_source/LB10.png +0 -0
  560. wx/demo/bmp_source/LB11.png +0 -0
  561. wx/demo/bmp_source/LB12.png +0 -0
  562. wx/demo/bmp_source/Pt.bmp +0 -0
  563. wx/demo/bmp_source/Vippi.png +0 -0
  564. wx/demo/bmp_source/backgrnd.png +0 -0
  565. wx/demo/bmp_source/book.png +0 -0
  566. wx/demo/bmp_source/book_blue.png +0 -0
  567. wx/demo/bmp_source/book_green.png +0 -0
  568. wx/demo/bmp_source/book_red.png +0 -0
  569. wx/demo/bmp_source/bp_btn1.png +0 -0
  570. wx/demo/bmp_source/bp_btn2.png +0 -0
  571. wx/demo/bmp_source/bp_btn3.png +0 -0
  572. wx/demo/bmp_source/bp_btn4.png +0 -0
  573. wx/demo/bmp_source/bulb1.bmp +0 -0
  574. wx/demo/bmp_source/bulb2.bmp +0 -0
  575. wx/demo/bmp_source/carrot.png +0 -0
  576. wx/demo/bmp_source/clipboard.png +0 -0
  577. wx/demo/bmp_source/code.png +0 -0
  578. wx/demo/bmp_source/core.png +0 -0
  579. wx/demo/bmp_source/custom.png +0 -0
  580. wx/demo/bmp_source/customcontrol.png +0 -0
  581. wx/demo/bmp_source/deletedocs.png +0 -0
  582. wx/demo/bmp_source/deleteperspective.png +0 -0
  583. wx/demo/bmp_source/demo.png +0 -0
  584. wx/demo/bmp_source/dialog.png +0 -0
  585. wx/demo/bmp_source/exit.png +0 -0
  586. wx/demo/bmp_source/expansion.png +0 -0
  587. wx/demo/bmp_source/find.png +0 -0
  588. wx/demo/bmp_source/findnext.png +0 -0
  589. wx/demo/bmp_source/floatcanvas.png +0 -0
  590. wx/demo/bmp_source/frame.png +0 -0
  591. wx/demo/bmp_source/images.png +0 -0
  592. wx/demo/bmp_source/inspect.png +0 -0
  593. wx/demo/bmp_source/layout.png +0 -0
  594. wx/demo/bmp_source/logo.png +0 -0
  595. wx/demo/bmp_source/miscellaneous.png +0 -0
  596. wx/demo/bmp_source/modifiedexists.png +0 -0
  597. wx/demo/bmp_source/mondrian.ico +0 -0
  598. wx/demo/bmp_source/morecontrols.png +0 -0
  599. wx/demo/bmp_source/moredialog.png +0 -0
  600. wx/demo/bmp_source/noicon.png +0 -0
  601. wx/demo/bmp_source/overview.png +0 -0
  602. wx/demo/bmp_source/pencil.png +0 -0
  603. wx/demo/bmp_source/pointy.png +0 -0
  604. wx/demo/bmp_source/process.png +0 -0
  605. wx/demo/bmp_source/pyshell.png +0 -0
  606. wx/demo/bmp_source/recent.png +0 -0
  607. wx/demo/bmp_source/rest.png +0 -0
  608. wx/demo/bmp_source/robin.jpg +0 -0
  609. wx/demo/bmp_source/rt_alignleft.xpm +24 -0
  610. wx/demo/bmp_source/rt_alignright.xpm +24 -0
  611. wx/demo/bmp_source/rt_bold.xpm +24 -0
  612. wx/demo/bmp_source/rt_centre.xpm +24 -0
  613. wx/demo/bmp_source/rt_colour.xpm +59 -0
  614. wx/demo/bmp_source/rt_copy.xpm +44 -0
  615. wx/demo/bmp_source/rt_cut.xpm +46 -0
  616. wx/demo/bmp_source/rt_font.xpm +25 -0
  617. wx/demo/bmp_source/rt_idea.xpm +47 -0
  618. wx/demo/bmp_source/rt_indentless.xpm +25 -0
  619. wx/demo/bmp_source/rt_indentmore.xpm +25 -0
  620. wx/demo/bmp_source/rt_italic.xpm +25 -0
  621. wx/demo/bmp_source/rt_open.xpm +57 -0
  622. wx/demo/bmp_source/rt_paste.xpm +46 -0
  623. wx/demo/bmp_source/rt_redo.xpm +58 -0
  624. wx/demo/bmp_source/rt_sample.xpm +44 -0
  625. wx/demo/bmp_source/rt_save.xpm +42 -0
  626. wx/demo/bmp_source/rt_smiley.xpm +42 -0
  627. wx/demo/bmp_source/rt_underline.xpm +25 -0
  628. wx/demo/bmp_source/rt_undo.xpm +58 -0
  629. wx/demo/bmp_source/rt_zebra.xpm +409 -0
  630. wx/demo/bmp_source/saveperspective.png +0 -0
  631. wx/demo/bmp_source/sm_down.bmp +0 -0
  632. wx/demo/bmp_source/sm_up.bmp +0 -0
  633. wx/demo/bmp_source/smiles2.bmp +0 -0
  634. wx/demo/bmp_source/test2.bmp +0 -0
  635. wx/demo/bmp_source/testmask.bmp +0 -0
  636. wx/demo/bmp_source/teststar.png +0 -0
  637. wx/demo/bmp_source/thekid.png +0 -0
  638. wx/demo/bmp_source/tog1.bmp +0 -0
  639. wx/demo/bmp_source/tog2.bmp +0 -0
  640. wx/demo/bmp_source/wiztest1.bmp +0 -0
  641. wx/demo/bmp_source/wiztest2.bmp +0 -0
  642. wx/demo/bmp_source/wxpdemo.ico +0 -0
  643. wx/demo/cursors/paperairplane_arrow_blue.cur +0 -0
  644. wx/demo/cursors/paperairplane_arrow_blue_fadeout80.cur +0 -0
  645. wx/demo/cursors/paperairplane_arrow_colorshift.ani +0 -0
  646. wx/demo/cursors/paperairplane_arrow_dark.cur +0 -0
  647. wx/demo/cursors/paperairplane_arrow_grey.cur +0 -0
  648. wx/demo/cursors/paperairplane_arrow_red.cur +0 -0
  649. wx/demo/cursors/paperairplane_arrow_white.cur +0 -0
  650. wx/demo/cursors/paperairplane_arrow_white24.png +0 -0
  651. wx/demo/data/0-tiger.svg +725 -0
  652. wx/demo/data/Asteroid_blaster.swf +0 -0
  653. wx/demo/data/SIL_OPEN_FONT_LICENSE.txt +97 -0
  654. wx/demo/data/SourceCodePro-Regular.ttf +0 -0
  655. wx/demo/data/accessories-calculator.svg +636 -0
  656. wx/demo/data/accessories-text-editor.svg +554 -0
  657. wx/demo/data/anykey.wav +0 -0
  658. wx/demo/data/applications-internet.svg +623 -0
  659. wx/demo/data/desktop-accessibility.svg +245 -0
  660. wx/demo/data/desktop-keyboard-shortcuts.svg +839 -0
  661. wx/demo/data/desktop-locale.svg +878 -0
  662. wx/demo/data/desktop-remote-desktop.svg +1479 -0
  663. wx/demo/data/desktop-theme.svg +882 -0
  664. wx/demo/data/desktop-wallpaper.svg +747 -0
  665. wx/demo/data/echo.py +25 -0
  666. wx/demo/data/imagemap.htm +20 -0
  667. wx/demo/data/imagemap.png +0 -0
  668. wx/demo/data/internet-group-chat.svg +312 -0
  669. wx/demo/data/internet-mail.svg +440 -0
  670. wx/demo/data/locale/af/LC_MESSAGES/wxpydemo.mo +0 -0
  671. wx/demo/data/locale/de/LC_MESSAGES/wxpydemo.mo +0 -0
  672. wx/demo/data/locale/es/LC_MESSAGES/wxpydemo.mo +0 -0
  673. wx/demo/data/locale/fr/LC_MESSAGES/wxpydemo.mo +0 -0
  674. wx/demo/data/locale/it/LC_MESSAGES/wxpydemo.mo +0 -0
  675. wx/demo/data/locale-src/af.po +23 -0
  676. wx/demo/data/locale-src/de.po +23 -0
  677. wx/demo/data/locale-src/es.po +22 -0
  678. wx/demo/data/locale-src/fr.po +22 -0
  679. wx/demo/data/locale-src/install +15 -0
  680. wx/demo/data/locale-src/it.po +23 -0
  681. wx/demo/data/locale-src/wxpydemo.po +21 -0
  682. wx/demo/data/office-calendar.svg +316 -0
  683. wx/demo/data/pic.png +0 -0
  684. wx/demo/data/pic2.bmp +0 -0
  685. wx/demo/data/plan.wav +0 -0
  686. wx/demo/data/proclamation.txt +115 -0
  687. wx/demo/data/resource.wdr +0 -0
  688. wx/demo/data/resource_wdr.xrc +146 -0
  689. wx/demo/data/romedalen.png +0 -0
  690. wx/demo/data/stc.h.html +3544 -0
  691. wx/demo/data/system-session.svg +510 -0
  692. wx/demo/data/system-users.svg +539 -0
  693. wx/demo/data/tables.htm +116 -0
  694. wx/demo/data/test-gradient-pen.svg +14 -0
  695. wx/demo/data/test-opacity.svg +7 -0
  696. wx/demo/data/test.htm +253 -0
  697. wx/demo/data/testmovie.mpg +0 -0
  698. wx/demo/data/testtable.txt +38 -0
  699. wx/demo/data/tips.txt +73 -0
  700. wx/demo/data/utilities-system-monitor.svg +435 -0
  701. wx/demo/data/utilities-terminal.svg +500 -0
  702. wx/demo/data/widgetTest.htm +70 -0
  703. wx/demo/data/world.dat +24055 -0
  704. wx/demo/demo.py +4 -0
  705. wx/demo/demo.pyw +4 -0
  706. wx/demo/demodata.py +310 -0
  707. wx/demo/encode_bitmaps.py +181 -0
  708. wx/demo/images.py +6812 -0
  709. wx/demo/infoframe.py +149 -0
  710. wx/demo/run.py +171 -0
  711. wx/demo/snippets/__init__.py +13 -0
  712. wx/demo/snippets/arc.py +21 -0
  713. wx/demo/snippets/arc_negative.py +21 -0
  714. wx/demo/snippets/clip.py +13 -0
  715. wx/demo/snippets/clip_image.py +13 -0
  716. wx/demo/snippets/curve_rectangle.py +53 -0
  717. wx/demo/snippets/curve_to.py +17 -0
  718. wx/demo/snippets/dash.py +18 -0
  719. wx/demo/snippets/ellipse.py +33 -0
  720. wx/demo/snippets/fill_and_stroke.py +12 -0
  721. wx/demo/snippets/fill_and_stroke2.py +18 -0
  722. wx/demo/snippets/fill_style.py +31 -0
  723. wx/demo/snippets/glyph_path.py +21 -0
  724. wx/demo/snippets/gradient.py +16 -0
  725. wx/demo/snippets/gradient_mask.py +12 -0
  726. wx/demo/snippets/group.py +16 -0
  727. wx/demo/snippets/image.py +14 -0
  728. wx/demo/snippets/imagepattern.py +23 -0
  729. wx/demo/snippets/path.py +7 -0
  730. wx/demo/snippets/set_line_cap.py +19 -0
  731. wx/demo/snippets/set_line_join.py +21 -0
  732. wx/demo/snippets/show_glyphs.py +15 -0
  733. wx/demo/snippets/text.py +22 -0
  734. wx/demo/snippets/text_align_center.py +26 -0
  735. wx/demo/snippets/text_extents.py +27 -0
  736. wx/demo/template.py +36 -0
  737. wx/demo/throbImages.py +1277 -0
  738. wx/demo/version.py +3 -0
  739. wx/demo/widgetTest.py +72 -0
  740. wx/demo/wxpdemo.ico +0 -0
  741. wx/glcanvas.py +10 -0
  742. wx/glcanvas.pyi +458 -0
  743. wx/grid.py +229 -0
  744. wx/grid.pyi +4959 -0
  745. wx/html.py +35 -0
  746. wx/html.pyi +2965 -0
  747. wx/html2.py +40 -0
  748. wx/html2.pyi +772 -0
  749. wx/lib/CDate.py +202 -0
  750. wx/lib/ClickableHtmlWindow.py +57 -0
  751. wx/lib/__init__.py +0 -0
  752. wx/lib/activex.py +178 -0
  753. wx/lib/activexwrapper.py +153 -0
  754. wx/lib/agw/__init__.py +128 -0
  755. wx/lib/agw/advancedsplash.py +564 -0
  756. wx/lib/agw/aquabutton.py +1127 -0
  757. wx/lib/agw/artmanager.py +2110 -0
  758. wx/lib/agw/aui/__init__.py +295 -0
  759. wx/lib/agw/aui/aui_constants.py +2628 -0
  760. wx/lib/agw/aui/aui_switcherdialog.py +1227 -0
  761. wx/lib/agw/aui/aui_utilities.py +672 -0
  762. wx/lib/agw/aui/auibar.py +4031 -0
  763. wx/lib/agw/aui/auibook.py +6289 -0
  764. wx/lib/agw/aui/dockart.py +1198 -0
  765. wx/lib/agw/aui/framemanager.py +10409 -0
  766. wx/lib/agw/aui/tabart.py +2771 -0
  767. wx/lib/agw/aui/tabmdi.py +679 -0
  768. wx/lib/agw/balloontip.py +1158 -0
  769. wx/lib/agw/buttonpanel.py +2823 -0
  770. wx/lib/agw/cubecolourdialog.py +3529 -0
  771. wx/lib/agw/customtreectrl.py +8963 -0
  772. wx/lib/agw/data/ShortcutEditor_1.png +0 -0
  773. wx/lib/agw/data/ShortcutEditor_1_thumb.png +0 -0
  774. wx/lib/agw/data/ShortcutEditor_2.png +0 -0
  775. wx/lib/agw/data/ShortcutEditor_2_thumb.png +0 -0
  776. wx/lib/agw/data/ShortcutEditor_3.png +0 -0
  777. wx/lib/agw/data/ShortcutEditor_3_thumb.png +0 -0
  778. wx/lib/agw/data/ShortcutEditor_4.png +0 -0
  779. wx/lib/agw/data/ShortcutEditor_4_thumb.png +0 -0
  780. wx/lib/agw/data/default_help_text.html +105 -0
  781. wx/lib/agw/flatmenu.py +7333 -0
  782. wx/lib/agw/flatnotebook.py +6672 -0
  783. wx/lib/agw/floatspin.py +1823 -0
  784. wx/lib/agw/fmcustomizedlg.py +540 -0
  785. wx/lib/agw/fmresources.py +407 -0
  786. wx/lib/agw/foldpanelbar.py +2282 -0
  787. wx/lib/agw/fourwaysplitter.py +1130 -0
  788. wx/lib/agw/genericmessagedialog.py +1549 -0
  789. wx/lib/agw/gradientbutton.py +732 -0
  790. wx/lib/agw/hyperlink.py +664 -0
  791. wx/lib/agw/hypertreelist.py +5374 -0
  792. wx/lib/agw/infobar.py +885 -0
  793. wx/lib/agw/knobctrl.py +945 -0
  794. wx/lib/agw/labelbook.py +3029 -0
  795. wx/lib/agw/multidirdialog.py +615 -0
  796. wx/lib/agw/peakmeter.py +1029 -0
  797. wx/lib/agw/persist/__init__.py +188 -0
  798. wx/lib/agw/persist/persist_constants.py +284 -0
  799. wx/lib/agw/persist/persist_handlers.py +2614 -0
  800. wx/lib/agw/persist/persistencemanager.py +864 -0
  801. wx/lib/agw/piectrl.py +1082 -0
  802. wx/lib/agw/pybusyinfo.py +399 -0
  803. wx/lib/agw/pycollapsiblepane.py +940 -0
  804. wx/lib/agw/pygauge.py +570 -0
  805. wx/lib/agw/pyprogress.py +917 -0
  806. wx/lib/agw/ribbon/__init__.py +198 -0
  807. wx/lib/agw/ribbon/art.py +219 -0
  808. wx/lib/agw/ribbon/art_aui.py +1284 -0
  809. wx/lib/agw/ribbon/art_default.py +81 -0
  810. wx/lib/agw/ribbon/art_internal.py +244 -0
  811. wx/lib/agw/ribbon/art_msw.py +2736 -0
  812. wx/lib/agw/ribbon/art_osx.py +52 -0
  813. wx/lib/agw/ribbon/bar.py +1261 -0
  814. wx/lib/agw/ribbon/buttonbar.py +1320 -0
  815. wx/lib/agw/ribbon/control.py +205 -0
  816. wx/lib/agw/ribbon/gallery.py +974 -0
  817. wx/lib/agw/ribbon/page.py +946 -0
  818. wx/lib/agw/ribbon/panel.py +1170 -0
  819. wx/lib/agw/ribbon/toolbar.py +1442 -0
  820. wx/lib/agw/rulerctrl.py +1887 -0
  821. wx/lib/agw/scrolledthumbnail.py +2119 -0
  822. wx/lib/agw/shapedbutton.py +1809 -0
  823. wx/lib/agw/shortcuteditor.py +2634 -0
  824. wx/lib/agw/speedmeter.py +1801 -0
  825. wx/lib/agw/supertooltip.py +1444 -0
  826. wx/lib/agw/thumbnailctrl.py +529 -0
  827. wx/lib/agw/toasterbox.py +1327 -0
  828. wx/lib/agw/ultimatelistctrl.py +13666 -0
  829. wx/lib/agw/xlsgrid.py +2113 -0
  830. wx/lib/agw/zoombar.py +1339 -0
  831. wx/lib/analogclock/__init__.py +140 -0
  832. wx/lib/analogclock/analogclock.py +631 -0
  833. wx/lib/analogclock/helpers.py +991 -0
  834. wx/lib/analogclock/lib_setup/__init__.py +0 -0
  835. wx/lib/analogclock/lib_setup/buttontreectrlpanel.py +297 -0
  836. wx/lib/analogclock/lib_setup/fontselect.py +57 -0
  837. wx/lib/analogclock/setup.py +490 -0
  838. wx/lib/analogclock/styles.py +47 -0
  839. wx/lib/anchors.py +103 -0
  840. wx/lib/art/__init__.py +4 -0
  841. wx/lib/art/flagart.py +1583 -0
  842. wx/lib/art/img2pyartprov.py +56 -0
  843. wx/lib/busy.py +146 -0
  844. wx/lib/buttons.py +1141 -0
  845. wx/lib/calendar.py +1597 -0
  846. wx/lib/checkbox.py +837 -0
  847. wx/lib/colourchooser/__init__.py +38 -0
  848. wx/lib/colourchooser/canvas.py +145 -0
  849. wx/lib/colourchooser/intl.py +24 -0
  850. wx/lib/colourchooser/pycolourbox.py +89 -0
  851. wx/lib/colourchooser/pycolourchooser.py +629 -0
  852. wx/lib/colourchooser/pycolourslider.py +100 -0
  853. wx/lib/colourchooser/pypalette.py +211 -0
  854. wx/lib/colourdb.py +740 -0
  855. wx/lib/colourselect.py +385 -0
  856. wx/lib/colourutils.py +118 -0
  857. wx/lib/combotreebox.py +944 -0
  858. wx/lib/delayedresult.py +420 -0
  859. wx/lib/dialogs.py +510 -0
  860. wx/lib/docview.py +3210 -0
  861. wx/lib/dragscroller.py +79 -0
  862. wx/lib/editor/README.txt +77 -0
  863. wx/lib/editor/__init__.py +24 -0
  864. wx/lib/editor/editor.py +974 -0
  865. wx/lib/editor/images.py +15 -0
  866. wx/lib/editor/selection.py +44 -0
  867. wx/lib/embeddedimage.py +76 -0
  868. wx/lib/eventStack.py +136 -0
  869. wx/lib/eventwatcher.py +440 -0
  870. wx/lib/evtmgr.py +521 -0
  871. wx/lib/expando.py +393 -0
  872. wx/lib/fancytext.py +505 -0
  873. wx/lib/filebrowsebutton.py +459 -0
  874. wx/lib/flashwin.py +262 -0
  875. wx/lib/flashwin_old.py +651 -0
  876. wx/lib/floatcanvas/FCEvents.py +53 -0
  877. wx/lib/floatcanvas/FCObjects.py +2923 -0
  878. wx/lib/floatcanvas/FloatCanvas.py +1027 -0
  879. wx/lib/floatcanvas/GUIMode.py +396 -0
  880. wx/lib/floatcanvas/NavCanvas.py +161 -0
  881. wx/lib/floatcanvas/Resources.py +319 -0
  882. wx/lib/floatcanvas/ScreenShot.py +1788 -0
  883. wx/lib/floatcanvas/Utilities/BBox.py +314 -0
  884. wx/lib/floatcanvas/Utilities/Colors.py +137 -0
  885. wx/lib/floatcanvas/Utilities/GUI.py +91 -0
  886. wx/lib/floatcanvas/Utilities/__init__.py +7 -0
  887. wx/lib/floatcanvas/__init__.py +124 -0
  888. wx/lib/foldmenu.py +89 -0
  889. wx/lib/gestures.py +310 -0
  890. wx/lib/gizmos/__init__.py +18 -0
  891. wx/lib/gizmos/dynamicsash.py +1202 -0
  892. wx/lib/gizmos/ledctrl.py +300 -0
  893. wx/lib/gizmos/treelistctrl.py +87 -0
  894. wx/lib/graphics.py +1939 -0
  895. wx/lib/gridmovers.py +511 -0
  896. wx/lib/iewin.py +249 -0
  897. wx/lib/iewin_old.py +894 -0
  898. wx/lib/imagebrowser.py +856 -0
  899. wx/lib/imageutils.py +163 -0
  900. wx/lib/infoframe.py +490 -0
  901. wx/lib/inspection.py +1255 -0
  902. wx/lib/intctrl.py +1001 -0
  903. wx/lib/itemspicker.py +256 -0
  904. wx/lib/langlistctrl.py +480 -0
  905. wx/lib/layoutf.py +271 -0
  906. wx/lib/masked/__init__.py +27 -0
  907. wx/lib/masked/combobox.py +839 -0
  908. wx/lib/masked/ctrl.py +108 -0
  909. wx/lib/masked/ipaddrctrl.py +242 -0
  910. wx/lib/masked/maskededit.py +7279 -0
  911. wx/lib/masked/numctrl.py +2001 -0
  912. wx/lib/masked/textctrl.py +465 -0
  913. wx/lib/masked/timectrl.py +1466 -0
  914. wx/lib/mixins/__init__.py +17 -0
  915. wx/lib/mixins/grid.py +47 -0
  916. wx/lib/mixins/gridlabelrenderer.py +251 -0
  917. wx/lib/mixins/imagelist.py +77 -0
  918. wx/lib/mixins/inspection.py +184 -0
  919. wx/lib/mixins/listctrl.py +894 -0
  920. wx/lib/mixins/rubberband.py +404 -0
  921. wx/lib/mixins/treemixin.py +678 -0
  922. wx/lib/msgpanel.py +95 -0
  923. wx/lib/multisash.py +747 -0
  924. wx/lib/myole4ax.idl +178 -0
  925. wx/lib/myole4ax.tlb +0 -0
  926. wx/lib/newevent.py +229 -0
  927. wx/lib/nvdlg.py +156 -0
  928. wx/lib/ogl/__init__.py +13 -0
  929. wx/lib/ogl/basic.py +3991 -0
  930. wx/lib/ogl/bmpshape.py +87 -0
  931. wx/lib/ogl/canvas.py +467 -0
  932. wx/lib/ogl/composit.py +1577 -0
  933. wx/lib/ogl/diagram.py +230 -0
  934. wx/lib/ogl/divided.py +483 -0
  935. wx/lib/ogl/drawn.py +900 -0
  936. wx/lib/ogl/lines.py +1811 -0
  937. wx/lib/ogl/oglmisc.py +608 -0
  938. wx/lib/pdfviewer/__init__.py +113 -0
  939. wx/lib/pdfviewer/bitmaps/ArrowLeft.png +0 -0
  940. wx/lib/pdfviewer/bitmaps/ArrowRight.png +0 -0
  941. wx/lib/pdfviewer/bitmaps/DirectionH.png +0 -0
  942. wx/lib/pdfviewer/bitmaps/DirectionV.png +0 -0
  943. wx/lib/pdfviewer/bitmaps/PlayerFirst.png +0 -0
  944. wx/lib/pdfviewer/bitmaps/PlayerLast.png +0 -0
  945. wx/lib/pdfviewer/bitmaps/PlayerNext.png +0 -0
  946. wx/lib/pdfviewer/bitmaps/PlayerPrev.png +0 -0
  947. wx/lib/pdfviewer/bitmaps/Printer.png +0 -0
  948. wx/lib/pdfviewer/bitmaps/ReadMe.txt +28 -0
  949. wx/lib/pdfviewer/bitmaps/Save.png +0 -0
  950. wx/lib/pdfviewer/bitmaps/ZoomIn.png +0 -0
  951. wx/lib/pdfviewer/bitmaps/ZoomOut.png +0 -0
  952. wx/lib/pdfviewer/bitmaps/encode_bitmaps.py +37 -0
  953. wx/lib/pdfviewer/buttonpanel.py +279 -0
  954. wx/lib/pdfviewer/images.py +240 -0
  955. wx/lib/pdfviewer/viewer.py +1077 -0
  956. wx/lib/pdfwin.py +295 -0
  957. wx/lib/pdfwin_old.py +789 -0
  958. wx/lib/platebtn.py +789 -0
  959. wx/lib/plot/CHANGELOG.md +150 -0
  960. wx/lib/plot/README.md +16 -0
  961. wx/lib/plot/__init__.py +46 -0
  962. wx/lib/plot/__main__.py +5 -0
  963. wx/lib/plot/examples/__init__.py +0 -0
  964. wx/lib/plot/examples/demo.py +1009 -0
  965. wx/lib/plot/examples/simple_example.py +54 -0
  966. wx/lib/plot/plotcanvas.py +2981 -0
  967. wx/lib/plot/polyobjects.py +1525 -0
  968. wx/lib/plot/utils.py +327 -0
  969. wx/lib/popupctl.py +250 -0
  970. wx/lib/printout.py +1157 -0
  971. wx/lib/progressindicator.py +151 -0
  972. wx/lib/pubsub/LICENSE_BSD_Simple.txt +23 -0
  973. wx/lib/pubsub/README_WxPython.txt +22 -0
  974. wx/lib/pubsub/RELEASE_NOTES.txt +71 -0
  975. wx/lib/pubsub/__init__.py +25 -0
  976. wx/lib/pubsub/core/__init__.py +92 -0
  977. wx/lib/pubsub/core/arg1/__init__.py +16 -0
  978. wx/lib/pubsub/core/arg1/listenerimpl.py +97 -0
  979. wx/lib/pubsub/core/arg1/publisher.py +40 -0
  980. wx/lib/pubsub/core/arg1/publishermixin.py +34 -0
  981. wx/lib/pubsub/core/arg1/topicargspecimpl.py +66 -0
  982. wx/lib/pubsub/core/arg1/topicmgrimpl.py +19 -0
  983. wx/lib/pubsub/core/callables.py +191 -0
  984. wx/lib/pubsub/core/imp2.py +63 -0
  985. wx/lib/pubsub/core/itopicdefnprovider.py +0 -0
  986. wx/lib/pubsub/core/kwargs/__init__.py +16 -0
  987. wx/lib/pubsub/core/kwargs/datamsg.py +27 -0
  988. wx/lib/pubsub/core/kwargs/listenerimpl.py +93 -0
  989. wx/lib/pubsub/core/kwargs/publisher.py +77 -0
  990. wx/lib/pubsub/core/kwargs/publishermixin.py +65 -0
  991. wx/lib/pubsub/core/kwargs/topicargspecimpl.py +217 -0
  992. wx/lib/pubsub/core/kwargs/topicmgrimpl.py +13 -0
  993. wx/lib/pubsub/core/listener.py +40 -0
  994. wx/lib/pubsub/core/listenerbase.py +185 -0
  995. wx/lib/pubsub/core/notificationmgr.py +185 -0
  996. wx/lib/pubsub/core/publisherbase.py +191 -0
  997. wx/lib/pubsub/core/topicargspec.py +77 -0
  998. wx/lib/pubsub/core/topicdefnprovider.py +632 -0
  999. wx/lib/pubsub/core/topicexc.py +72 -0
  1000. wx/lib/pubsub/core/topicmgr.py +456 -0
  1001. wx/lib/pubsub/core/topicobj.py +472 -0
  1002. wx/lib/pubsub/core/topictreetraverser.py +143 -0
  1003. wx/lib/pubsub/core/topicutils.py +118 -0
  1004. wx/lib/pubsub/core/treeconfig.py +21 -0
  1005. wx/lib/pubsub/core/validatedefnargs.py +29 -0
  1006. wx/lib/pubsub/core/weakmethod.py +102 -0
  1007. wx/lib/pubsub/policies.py +24 -0
  1008. wx/lib/pubsub/pub.py +199 -0
  1009. wx/lib/pubsub/py2and3.py +608 -0
  1010. wx/lib/pubsub/setuparg1.py +47 -0
  1011. wx/lib/pubsub/setupkwargs.py +29 -0
  1012. wx/lib/pubsub/utils/__init__.py +27 -0
  1013. wx/lib/pubsub/utils/exchandling.py +100 -0
  1014. wx/lib/pubsub/utils/misc.py +100 -0
  1015. wx/lib/pubsub/utils/notification.py +331 -0
  1016. wx/lib/pubsub/utils/topictreeprinter.py +195 -0
  1017. wx/lib/pubsub/utils/xmltopicdefnprovider.py +287 -0
  1018. wx/lib/pydocview.py +3300 -0
  1019. wx/lib/rcsizer.py +229 -0
  1020. wx/lib/resizewidget.py +357 -0
  1021. wx/lib/scrolledpanel.py +225 -0
  1022. wx/lib/sheet.py +350 -0
  1023. wx/lib/sized_controls.py +691 -0
  1024. wx/lib/softwareupdate.py +361 -0
  1025. wx/lib/splitter.py +925 -0
  1026. wx/lib/statbmp.py +199 -0
  1027. wx/lib/stattext.py +322 -0
  1028. wx/lib/throbber.py +425 -0
  1029. wx/lib/ticker.py +295 -0
  1030. wx/lib/ticker_xrc.py +48 -0
  1031. wx/lib/utils.py +89 -0
  1032. wx/lib/wordwrap.py +97 -0
  1033. wx/lib/wxcairo/__init__.py +124 -0
  1034. wx/lib/wxcairo/wx_cairocffi.py +200 -0
  1035. wx/lib/wxcairo/wx_pycairo.py +463 -0
  1036. wx/lib/wxpTag.py +274 -0
  1037. wx/locale/af/LC_MESSAGES/wxstd.mo +0 -0
  1038. wx/locale/an/LC_MESSAGES/wxstd.mo +0 -0
  1039. wx/locale/ar/LC_MESSAGES/wxstd.mo +0 -0
  1040. wx/locale/ca/LC_MESSAGES/wxstd.mo +0 -0
  1041. wx/locale/ca@valencia/LC_MESSAGES/wxstd.mo +0 -0
  1042. wx/locale/cs/LC_MESSAGES/wxstd.mo +0 -0
  1043. wx/locale/da/LC_MESSAGES/wxstd.mo +0 -0
  1044. wx/locale/de/LC_MESSAGES/wxstd.mo +0 -0
  1045. wx/locale/el/LC_MESSAGES/wxstd.mo +0 -0
  1046. wx/locale/es/LC_MESSAGES/wxstd.mo +0 -0
  1047. wx/locale/eu/LC_MESSAGES/wxstd.mo +0 -0
  1048. wx/locale/fa_IR/LC_MESSAGES/wxstd.mo +0 -0
  1049. wx/locale/fi/LC_MESSAGES/wxstd.mo +0 -0
  1050. wx/locale/fr/LC_MESSAGES/wxstd.mo +0 -0
  1051. wx/locale/gl_ES/LC_MESSAGES/wxstd.mo +0 -0
  1052. wx/locale/hi/LC_MESSAGES/wxstd.mo +0 -0
  1053. wx/locale/hr/LC_MESSAGES/wxstd.mo +0 -0
  1054. wx/locale/hu/LC_MESSAGES/wxstd.mo +0 -0
  1055. wx/locale/id/LC_MESSAGES/wxstd.mo +0 -0
  1056. wx/locale/it/LC_MESSAGES/wxstd.mo +0 -0
  1057. wx/locale/ja/LC_MESSAGES/wxstd.mo +0 -0
  1058. wx/locale/ka/LC_MESSAGES/wxstd.mo +0 -0
  1059. wx/locale/ko_KR/LC_MESSAGES/wxstd.mo +0 -0
  1060. wx/locale/lt/LC_MESSAGES/wxstd.mo +0 -0
  1061. wx/locale/lv/LC_MESSAGES/wxstd.mo +0 -0
  1062. wx/locale/ms/LC_MESSAGES/wxstd.mo +0 -0
  1063. wx/locale/nb/LC_MESSAGES/wxstd.mo +0 -0
  1064. wx/locale/ne/LC_MESSAGES/wxstd.mo +0 -0
  1065. wx/locale/nl/LC_MESSAGES/wxstd.mo +0 -0
  1066. wx/locale/pl/LC_MESSAGES/wxstd.mo +0 -0
  1067. wx/locale/pt/LC_MESSAGES/wxstd.mo +0 -0
  1068. wx/locale/pt_BR/LC_MESSAGES/wxstd.mo +0 -0
  1069. wx/locale/ro/LC_MESSAGES/wxstd.mo +0 -0
  1070. wx/locale/ru/LC_MESSAGES/wxstd.mo +0 -0
  1071. wx/locale/sk/LC_MESSAGES/wxstd.mo +0 -0
  1072. wx/locale/sl/LC_MESSAGES/wxstd.mo +0 -0
  1073. wx/locale/sq/LC_MESSAGES/wxstd.mo +0 -0
  1074. wx/locale/sv/LC_MESSAGES/wxstd.mo +0 -0
  1075. wx/locale/ta/LC_MESSAGES/wxstd.mo +0 -0
  1076. wx/locale/tr/LC_MESSAGES/wxstd.mo +0 -0
  1077. wx/locale/uk/LC_MESSAGES/wxstd.mo +0 -0
  1078. wx/locale/vi/LC_MESSAGES/wxstd.mo +0 -0
  1079. wx/locale/zh_CN/LC_MESSAGES/wxstd.mo +0 -0
  1080. wx/locale/zh_TW/LC_MESSAGES/wxstd.mo +0 -0
  1081. wx/media.py +27 -0
  1082. wx/media.pyi +223 -0
  1083. wx/msw.py +13 -0
  1084. wx/msw.pyi +65 -0
  1085. wx/propgrid.py +1451 -0
  1086. wx/propgrid.pyi +7914 -0
  1087. wx/py/CHANGES.txt +796 -0
  1088. wx/py/Py.ico +0 -0
  1089. wx/py/PyAlaCarte.py +34 -0
  1090. wx/py/PyAlaMode.py +34 -0
  1091. wx/py/PyAlaModeTest.py +33 -0
  1092. wx/py/PyCrust.ico +0 -0
  1093. wx/py/PyCrust.py +78 -0
  1094. wx/py/PyCrust_16.png +0 -0
  1095. wx/py/PyCrust_32.png +0 -0
  1096. wx/py/PyFilling.py +35 -0
  1097. wx/py/PyShell.py +78 -0
  1098. wx/py/PySlices.ico +0 -0
  1099. wx/py/PySlices.py +98 -0
  1100. wx/py/PySlicesShell.py +94 -0
  1101. wx/py/PySlices_16.png +0 -0
  1102. wx/py/PySlices_32.png +0 -0
  1103. wx/py/PyWrap.py +52 -0
  1104. wx/py/README.txt +77 -0
  1105. wx/py/__init__.py +20 -0
  1106. wx/py/buffer.py +136 -0
  1107. wx/py/crust.py +403 -0
  1108. wx/py/crustslices.py +403 -0
  1109. wx/py/dispatcher.py +259 -0
  1110. wx/py/document.py +37 -0
  1111. wx/py/editor.py +844 -0
  1112. wx/py/editwindow.py +299 -0
  1113. wx/py/filling.py +357 -0
  1114. wx/py/frame.py +978 -0
  1115. wx/py/images.py +212 -0
  1116. wx/py/interpreter.py +170 -0
  1117. wx/py/introspect.py +393 -0
  1118. wx/py/magic.py +98 -0
  1119. wx/py/parse.py +134 -0
  1120. wx/py/path.py +36 -0
  1121. wx/py/pseudo.py +99 -0
  1122. wx/py/shell.py +1588 -0
  1123. wx/py/sliceshell.py +3814 -0
  1124. wx/py/tests/test_interpreter.py +71 -0
  1125. wx/py/tests/test_introspect.py +862 -0
  1126. wx/py/tests/test_pseudo.py +70 -0
  1127. wx/py/tests/test_version.py +36 -0
  1128. wx/py/tests/testall.py +22 -0
  1129. wx/py/version.py +7 -0
  1130. wx/ribbon.py +45 -0
  1131. wx/ribbon.pyi +2494 -0
  1132. wx/richtext.py +142 -0
  1133. wx/richtext.pyi +12113 -0
  1134. wx/siplib.cp313-win_amd64.pyd +0 -0
  1135. wx/stc.py +58 -0
  1136. wx/stc.pyi +8463 -0
  1137. wx/svg/__init__.py +364 -0
  1138. wx/svg/_nanosvg.cp313-win_amd64.pyd +0 -0
  1139. wx/tools/__init__.py +18 -0
  1140. wx/tools/dbg.py +268 -0
  1141. wx/tools/genaxmodule.py +50 -0
  1142. wx/tools/helpviewer.py +92 -0
  1143. wx/tools/img2img.py +85 -0
  1144. wx/tools/img2png.py +54 -0
  1145. wx/tools/img2py.py +309 -0
  1146. wx/tools/img2xpm.py +54 -0
  1147. wx/tools/pywxrc.py +949 -0
  1148. wx/tools/wxget.py +254 -0
  1149. wx/tools/wxget_docs_demo.py +186 -0
  1150. wx/wxbase315u_net_vc140_x64.dll +0 -0
  1151. wx/wxbase315u_vc140_x64.dll +0 -0
  1152. wx/wxbase315u_xml_vc140_x64.dll +0 -0
  1153. wx/wxmsw315u_adv_vc140_x64.dll +0 -0
  1154. wx/wxmsw315u_aui_vc140_x64.dll +0 -0
  1155. wx/wxmsw315u_core_vc140_x64.dll +0 -0
  1156. wx/wxmsw315u_gl_vc140_x64.dll +0 -0
  1157. wx/wxmsw315u_html_vc140_x64.dll +0 -0
  1158. wx/wxmsw315u_media_vc140_x64.dll +0 -0
  1159. wx/wxmsw315u_propgrid_vc140_x64.dll +0 -0
  1160. wx/wxmsw315u_qa_vc140_x64.dll +0 -0
  1161. wx/wxmsw315u_ribbon_vc140_x64.dll +0 -0
  1162. wx/wxmsw315u_richtext_vc140_x64.dll +0 -0
  1163. wx/wxmsw315u_stc_vc140_x64.dll +0 -0
  1164. wx/wxmsw315u_webview_vc140_x64.dll +0 -0
  1165. wx/wxmsw315u_xrc_vc140_x64.dll +0 -0
  1166. wx/xml.py +15 -0
  1167. wx/xml.pyi +575 -0
  1168. wx/xrc.py +65 -0
  1169. wx/xrc.pyi +742 -0
  1170. wxPython_zombie-3.1.5.8.dist-info/LICENSE.txt +950 -0
  1171. wxPython_zombie-3.1.5.8.dist-info/METADATA +107 -0
  1172. wxPython_zombie-3.1.5.8.dist-info/RECORD +1175 -0
  1173. wxPython_zombie-3.1.5.8.dist-info/WHEEL +5 -0
  1174. wxPython_zombie-3.1.5.8.dist-info/entry_points.txt +2 -0
  1175. wxPython_zombie-3.1.5.8.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1327 @@
1
+ # --------------------------------------------------------------------------- #
2
+ # TOASTERBOX wxPython IMPLEMENTATION
3
+ # Ported And Enhanced From wxWidgets Contribution (Aj Bommarito) By:
4
+ #
5
+ # Andrea Gavana, @ 16 September 2005
6
+ # Latest Revision: 27 Dec 2012, 21.00 GMT
7
+ #
8
+ #
9
+ # TODO/Caveats List
10
+ #
11
+ # 1. Any Idea?
12
+ #
13
+ #
14
+ # For All Kind Of Problems, Requests Of Enhancements And Bug Reports, Please
15
+ # Write To Me At:
16
+ #
17
+ # andrea.gavana@gmail.com
18
+ # andrea.gavana@maerskoil.com
19
+ #
20
+ # Or, Obviously, To The wxPython Mailing List!!!
21
+ #
22
+ # Tags: phoenix-port, documented, unittest, py3-port
23
+ #
24
+ # End Of Comments
25
+ # --------------------------------------------------------------------------- #
26
+
27
+
28
+ """
29
+ :class:`~wx.lib.agw.toasterbox.ToasterBox` is a cross-platform widget to make the creation of MSN style "toaster"
30
+ popups easier.
31
+
32
+
33
+ Description
34
+ ===========
35
+
36
+ ToasterBox is a cross-platform widget to make the creation of MSN style "toaster"
37
+ popups easier. The syntax is really easy especially if you are familiar with the
38
+ syntax of wxPython.
39
+
40
+ It has 2 main styles:
41
+
42
+ - ``TB_SIMPLE``: using this style, you will be able to specify a background image for
43
+ ToasterBox, text properties as text colour, font and label;
44
+
45
+ - ``TB_COMPLEX``: this style will allow you to put almost any control inside a
46
+ ToasterBox. You can add a panel in which you can put all the controls you like.
47
+
48
+ Both styles support the setting of ToasterBox position (on screen coordinates),
49
+ size, the time after which the ToasterBox is destroyed (linger), and the scroll
50
+ speed of ToasterBox.
51
+
52
+
53
+ Usage
54
+ =====
55
+
56
+ Usage example::
57
+
58
+ import wx
59
+ import wx.lib.agw.toasterbox as TB
60
+
61
+ class MyFrame(wx.Frame):
62
+
63
+ def __init__(self, parent):
64
+
65
+ wx.Frame.__init__(self, parent, -1, "ToasterBox Demo")
66
+
67
+ toaster = TB.ToasterBox(self, tbstyle=TB.TB_COMPLEX)
68
+ toaster.SetPopupPauseTime(3000)
69
+
70
+ tbpanel = toaster.GetToasterBoxWindow()
71
+ panel = wx.Panel(tbpanel, -1)
72
+ sizer = wx.BoxSizer(wx.VERTICAL)
73
+
74
+ button = wx.Button(panel, wx.ID_ANY, "Simple button")
75
+ sizer.Add(button, 0, wx.EXPAND)
76
+
77
+ panel.SetSizer(sizer)
78
+ toaster.AddPanel(panel)
79
+
80
+ wx.CallLater(1000, toaster.Play)
81
+
82
+
83
+ # our normal wxApp-derived class, as usual
84
+
85
+ app = wx.App(0)
86
+
87
+ frame = MyFrame(None)
88
+ app.SetTopWindow(frame)
89
+ frame.Show()
90
+
91
+ app.MainLoop()
92
+
93
+
94
+
95
+ Supported Platforms
96
+ ===================
97
+
98
+ ToasterBox has been tested on the following platforms:
99
+
100
+ - Windows (verified on Windows XP, 2000)
101
+ - Linux
102
+ - Mac
103
+
104
+
105
+ Window Styles
106
+ =============
107
+
108
+ This class supports the following window styles:
109
+
110
+ ==================== =========== ==================================================
111
+ Window Styles Hex Value Description
112
+ ==================== =========== ==================================================
113
+ ``TB_SIMPLE`` 0x1 A simple `ToasterBox`, with background image and text customization can be created.
114
+ ``TB_ONTIME`` 0x1 `ToasterBox` will close after a specified amount of time.
115
+ ``TB_COMPLEX`` 0x2 ToasterBoxes with different degree of complexity can be created. You can add as many controls as you want, provided that you call the :meth:`~ToasterBox.AddPanel` method and pass to it a dummy frame and a :class:`Panel`. See the demo for details.
116
+ ``TB_ONCLICK`` 0x2 `ToasterBox` can be closed by clicking anywhere on the `ToasterBox` frame.
117
+ ``TB_DEFAULT_STYLE`` 0x2008002 Default window style for `ToasterBox`, with no caption nor close box.
118
+ ``TB_CAPTION`` 0x22009806 `ToasterBox` will have a caption, with the possibility to set a title for the `ToasterBox` frame, and a close box.
119
+ ==================== =========== ==================================================
120
+
121
+
122
+ Events Processing
123
+ =================
124
+
125
+ `No custom events are available for this class.`
126
+
127
+
128
+ License And Version
129
+ ===================
130
+
131
+ ToasterBox is distributed under the wxPython license.
132
+
133
+ Latest revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT
134
+
135
+ Version 0.3
136
+
137
+ """
138
+
139
+ import textwrap
140
+ import time
141
+ import wx
142
+
143
+
144
+ # Define Window List, We Use It Globally
145
+ winlist = []
146
+ """ Globally defined window list. """
147
+
148
+ TB_SIMPLE = 1
149
+ """ A simple ToasterBox, with background image and text customization can be created. """
150
+ TB_COMPLEX = 2
151
+ """ ToasterBoxes with different degree of complexity can be created. You can add as many controls as you want, provided that you call the AddPanel() method and pass to it a dummy frame and a wx.Panel. See the demo for details. """
152
+ TB_DEFAULT_STYLE = wx.SIMPLE_BORDER | wx.STAY_ON_TOP | wx.FRAME_NO_TASKBAR
153
+ """ Default window style for `ToasterBox`, with no caption nor close box. """
154
+ TB_CAPTION = TB_DEFAULT_STYLE | wx.CAPTION | wx.SYSTEM_MENU | wx.CLOSE_BOX | wx.FRAME_NO_TASKBAR
155
+ """ `ToasterBox` will have a caption, with the possibility to set a title for the `ToasterBox` frame, and a close box. """
156
+ TB_ONTIME = 1
157
+ """ `ToasterBox` will close after a specified amount of time. """
158
+ TB_ONCLICK = 2
159
+ """ `ToasterBox` can be closed by clicking anywhere on the `ToasterBox` frame. """
160
+
161
+ # scroll from up to down
162
+ TB_SCR_TYPE_UD = 1
163
+ """ Scroll from up to down. """
164
+ # scroll from down to up
165
+ TB_SCR_TYPE_DU = 2
166
+ """ Scroll from down to up. """
167
+ # fade in/out
168
+ TB_SCR_TYPE_FADE = 4
169
+ """ Fade in and out. """
170
+
171
+
172
+ # ------------------------------------------------------------------------------ #
173
+ # Class ToasterBox
174
+ # Main Class Implementation. It Is Basically A wx.Timer. It Creates And
175
+ # Displays Popups And Handles The "Stacking".
176
+ # ------------------------------------------------------------------------------ #
177
+
178
+ class ToasterBox(wx.Timer):
179
+ """
180
+ ToasterBox is a cross-platform widget to make the creation of MSN style "toaster"
181
+ popups easier.
182
+ """
183
+
184
+ def __init__(self, parent, tbstyle=TB_SIMPLE, windowstyle=TB_DEFAULT_STYLE,
185
+ closingstyle=TB_ONTIME, scrollType=TB_SCR_TYPE_DU):
186
+ """
187
+ Default class constructor.
188
+
189
+ :param `parent`: the window parent;
190
+ :param `tbstyle`: the :class:`ToasterBox` main style. Can be one of the following
191
+ bits:
192
+
193
+ ====================== ======= ================================
194
+ `ToasterBox` Style Value Description
195
+ ====================== ======= ================================
196
+ ``TB_SIMPLE`` 0x1 A simple :class:`ToasterBox`, with background image and text customization can be created
197
+ ``TB_COMPLEX`` 0x2 `ToasterBoxes` with different degree of complexity can be created. You can add as many controls as you want, provided that you call the :meth:`~ToasterBox.AddPanel` method and pass to it a dummy frame and a :class:`Panel`.
198
+ ====================== ======= ================================
199
+
200
+ :param `windowstyle`: this parameter influences the visual appearance of
201
+ :class:`ToasterBox`, and can be one of the following styles:
202
+
203
+ ====================== ========== ================================
204
+ Window Style Hex Value Description
205
+ ====================== ========== ================================
206
+ ``TB_DEFAULT_STYLE`` 0x2008002 Default window style for :class:`ToasterBox`, with no caption nor close box.
207
+ ``TB_CAPTION`` 0x22009806 :class:`ToasterBox` will have a caption, with the possibility to set a title for the :class:`ToasterBox` frame, and a close box.
208
+ ====================== ========== ================================
209
+
210
+ :param `closingstyle`: the closing style for :class:`ToasterBox`. Can be one of the
211
+ following bits:
212
+
213
+ ==================== =========== ==================================================
214
+ Closing Styles Hex Value Description
215
+ ==================== =========== ==================================================
216
+ ``TB_ONTIME`` 0x1 :class:`ToasterBox` will close after a specified amount of time.
217
+ ``TB_ONCLICK`` 0x2 :class:`ToasterBox` can be closed by clicking anywhere on the :class:`ToasterBox` frame.
218
+ ==================== =========== ==================================================
219
+
220
+ :param `scrollType`: the scrolling direction for :class:`ToasterBox`. Can be one of the
221
+ following bits:
222
+
223
+ ==================== =========== ==================================================
224
+ Scroll Styles Hex Value Description
225
+ ==================== =========== ==================================================
226
+ ``TB_SCR_TYPE_UD`` 0x1 :class:`ToasterBox` will scroll from up to down
227
+ ``TB_SCR_TYPE_DU`` 0x2 :class:`ToasterBox` will scroll from down to up
228
+ ``TB_SCR_TYPE_FADE`` 0x4 :class:`ToasterBox` will fade in/out (without scrolling).
229
+ ==================== =========== ==================================================
230
+
231
+ """
232
+
233
+ self._parent = parent
234
+ self._sleeptime = 10
235
+ self._pausetime = 1700
236
+ self._popuptext = "default"
237
+ self._popupposition = wx.Point(100,100)
238
+ self._popuptop = wx.Point(0,0)
239
+ self._popupsize = wx.Size(150, 170)
240
+ self._usefocus = True
241
+ self._originalfocus = wx.Window.FindFocus()
242
+
243
+ self._backgroundcolour = wx.WHITE
244
+ self._foregroundcolour = wx.BLACK
245
+ self._textfont = wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Verdana")
246
+
247
+ self._bitmap = None
248
+
249
+ self._tbstyle = tbstyle
250
+ self._windowstyle = windowstyle
251
+ self._closingstyle = closingstyle
252
+ self._scrollType = scrollType
253
+
254
+ self._panel = None
255
+
256
+ self._bottomright = wx.Point(wx.GetDisplaySize().GetWidth(),
257
+ wx.GetDisplaySize().GetHeight())
258
+
259
+ if parent is not None:
260
+ parent.Bind(wx.EVT_ICONIZE, lambda evt: [w.Hide() for w in winlist])
261
+ self._moveTimer = wx.Timer(parent, -1)
262
+ parent.Bind(wx.EVT_TIMER, self.OnMoveTimer, self._moveTimer)
263
+
264
+ self._tb = ToasterBoxWindow(self._parent, self, self._tbstyle, self._windowstyle,
265
+ self._closingstyle, scrollType=self._scrollType)
266
+
267
+ def SetPopupPosition(self, pos):
268
+ """
269
+ Sets the :class:`ToasterBox` position on screen.
270
+
271
+ :param `pos`: the widget position, an instance of :class:`wx.Point`.
272
+ """
273
+
274
+ self._popupposition = pos
275
+
276
+
277
+ def SetPopupPositionByInt(self, pos):
278
+ """
279
+ Sets the :class:`ToasterBox` position on screen, at one of the screen corners.
280
+
281
+ :param `pos`: an integer specifying the screen corner, namely:
282
+
283
+ ============= ========================================
284
+ Corner Number Position
285
+ ============= ========================================
286
+ 0 Top left screen corner
287
+ 1 Top right screen corner
288
+ 2 Bottom left screen corner
289
+ 3 Bottom right screen corner
290
+ ============= ========================================
291
+
292
+ """
293
+
294
+ w, h = wx.GetDisplaySize()
295
+ self._bottomright = wx.Point(w, h)
296
+
297
+ # top left
298
+ if pos == 0:
299
+ popupposition = wx.Point(0,0)
300
+ # top right
301
+ elif pos == 1:
302
+ popupposition = wx.Point(w - self._popupsize[0], 0)
303
+ # bottom left
304
+ elif pos == 2:
305
+ popupposition = wx.Point(0, h - self._popupsize[1])
306
+ # bottom right
307
+ elif pos == 3:
308
+ popupposition = wx.Point(self._bottomright.x - self._popupsize[0],
309
+ self._bottomright.y - self._popupsize[1])
310
+
311
+ self._bottomright = wx.Point(popupposition.x + self._popupsize[0],
312
+ popupposition.y + self._popupsize[1])
313
+
314
+ self._popupposition = popupposition
315
+
316
+
317
+ def CenterOnParent(self, direction=wx.BOTH):
318
+ """
319
+ Centres the window on its parent (if any). If the :class:`ToasterBox` parent is ``None``,
320
+ it calls :meth:`~ToasterBox.CenterOnScreen`.
321
+
322
+ :param `direction`: specifies the direction for the centering. May be ``wx.HORIZONTAL``,
323
+ ``wx.VERTICAL`` or ``wx.BOTH``.
324
+
325
+ :note: This methods provides for a way to center :class:`ToasterBox` over their parents instead of the
326
+ entire screen. If there is no parent, then behaviour is the same as :meth:`~ToasterBox.CenterOnScreen`.
327
+
328
+ :see: :meth:`~ToasterBox.CenterOnScreen`.
329
+ """
330
+
331
+ if not self._parent:
332
+ self.CenterOnScreen(direction)
333
+ return
334
+
335
+ parent = self._parent
336
+ screenrect = parent.GetScreenRect()
337
+ toast_width, toast_height = self._popupsize
338
+ x, y = screenrect.GetX(), screenrect.GetY()
339
+ width, height = screenrect.GetWidth(), screenrect.GetHeight()
340
+
341
+ if direction == wx.VERTICAL:
342
+ pos = wx.Point(x, (y + (height/2) - (toast_height/2)))
343
+ elif direction == wx.HORIZONTAL:
344
+ pos = wx.Point((x + (width/2) - (toast_width/2)), y)
345
+ else:
346
+ pos = wx.Point((x + (width/2) - (toast_width/2)), (y + (height/2) - (toast_height/2)))
347
+
348
+ self.SetPopupPosition(pos)
349
+
350
+
351
+ CentreOnParent = CenterOnParent
352
+
353
+
354
+ def CenterOnScreen(self, direction=wx.BOTH):
355
+ """
356
+ Centres the :class:`ToasterBox` on screen.
357
+
358
+ :param `direction`: specifies the direction for the centering. May be ``wx.HORIZONTAL``,
359
+ ``wx.VERTICAL`` or ``wx.BOTH``.
360
+
361
+ :see: :meth:`~ToasterBox.CenterOnParent`.
362
+ """
363
+
364
+ screenSize = wx.GetDisplaySize()
365
+ toast_width, toast_height = self._popupsize
366
+ width, height = screenSize.GetWidth(), screenSize.GetHeight()
367
+
368
+ if direction == wx.VERTICAL:
369
+ pos = wx.Point(0, (height/2) - (toast_height/2))
370
+ elif direction == wx.HORIZONTAL:
371
+ pos = wx.Point((width/2) - (toast_width/2), 0)
372
+ else:
373
+ pos = wx.Point((width/2) - (toast_width/2), (height/2) - (toast_height/2))
374
+
375
+ self.SetPopupPosition(pos)
376
+
377
+
378
+ CentreOnScreen = CenterOnScreen
379
+
380
+
381
+ def SetPopupBackgroundColour(self, colour=None):
382
+ """
383
+ Sets the :class:`ToasterBox` background colour.
384
+
385
+ :param `colour`: a valid :class:`wx.Colour` object. If defaulted to ``None``, then
386
+ the background colour will be white.
387
+
388
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
389
+ """
390
+
391
+ if colour is None:
392
+ colour = wx.WHITE
393
+
394
+ colour = wx.Colour(colour)
395
+ self._backgroundcolour = colour
396
+ self._tb.SetPopupBackgroundColour(self._backgroundcolour)
397
+
398
+
399
+ def SetPopupTextColour(self, colour=None):
400
+ """
401
+ Sets the :class:`ToasterBox` foreground colour.
402
+
403
+ :param `colour`: a valid :class:`wx.Colour` object. If defaulted to ``None``, then
404
+ the background colour will be black.
405
+
406
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
407
+ """
408
+
409
+ if colour is None:
410
+ colour = wx.BLACK
411
+
412
+ colour = wx.Colour(colour)
413
+ self._foregroundcolour = colour
414
+
415
+
416
+ def SetPopupTextFont(self, font=None):
417
+ """
418
+ Sets the :class:`ToasterBox` text font.
419
+
420
+ :param `colour`: a valid :class:`wx.Colour` object. If defaulted to ``None``, then
421
+ a simple generic font will be generated.
422
+
423
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
424
+ """
425
+
426
+ if font is None:
427
+ font = wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
428
+
429
+ self._textfont = font
430
+
431
+
432
+ def SetPopupSize(self, size):
433
+ """
434
+ Sets the :class:`ToasterBox` size.
435
+
436
+ :param `size`: the new control size, an instance of :class:`wx.Size`.
437
+ """
438
+
439
+ self._popupsize = size
440
+
441
+
442
+ def SetPopupPauseTime(self, pausetime):
443
+ """
444
+ Sets the time after which the :class:`ToasterBox` is destroyed (linger).
445
+
446
+ :param `pausetime`: the delay after which the control is destroyed, in seconds.
447
+ """
448
+
449
+ self._pausetime = pausetime
450
+
451
+
452
+ def SetPopupBitmap(self, bitmap=None):
453
+ """
454
+ Sets the :class:`ToasterBox` background image.
455
+
456
+ :param `bitmap`: a valid :class:`wx.Bitmap` object or filename. If defaulted
457
+ to ``None``, then no background bitmap is used.
458
+
459
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
460
+ """
461
+
462
+ if bitmap is not None:
463
+ bitmap = wx.Bitmap(bitmap)
464
+
465
+ self._bitmap = bitmap
466
+
467
+
468
+ def SetPopupScrollSpeed(self, speed):
469
+ """
470
+ Sets the :class:`ToasterBox` scroll speed.
471
+
472
+ :param `speed`: it is the pause time (in milliseconds) for every step in the
473
+ `ScrollUp` method.
474
+ """
475
+
476
+ self._sleeptime = speed
477
+
478
+
479
+ def SetPopupText(self, text):
480
+ """
481
+ Sets the :class:`ToasterBox` text label.
482
+
483
+ :param `text`: the widget label.
484
+
485
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
486
+ """
487
+
488
+ self._popuptext = text
489
+
490
+
491
+ def AddPanel(self, panel):
492
+ """
493
+ Adds a panel to the :class:`ToasterBox`.
494
+
495
+ :param `panel`: an instance of :class:`wx.Window`.
496
+
497
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_COMPLEX`` style.
498
+ """
499
+
500
+ if not self._tbstyle & TB_COMPLEX:
501
+ raise Exception("\nERROR: Panel Can Not Be Added When Using TB_SIMPLE ToasterBox Style")
502
+
503
+ self._panel = panel
504
+
505
+
506
+ def Play(self):
507
+ """ Creates the :class:`ToasterBoxWindow`, that does all the job. """
508
+
509
+ # create new window
510
+ self._tb.SetPopupSize((self._popupsize[0], self._popupsize[1]))
511
+ self._tb.SetPopupPosition((self._popupposition[0], self._popupposition[1]))
512
+ self._tb.SetPopupPauseTime(self._pausetime)
513
+ self._tb.SetPopupScrollSpeed(self._sleeptime)
514
+ self._tb.SetUseFocus(self._usefocus, self._originalfocus)
515
+
516
+ if self._tbstyle == TB_SIMPLE:
517
+ self._tb.SetPopupTextColour(self._foregroundcolour)
518
+ self._tb.SetPopupBackgroundColour(self._backgroundcolour)
519
+ self._tb.SetPopupTextFont(self._textfont)
520
+
521
+ if self._bitmap is not None:
522
+ self._tb.SetPopupBitmap(self._bitmap)
523
+
524
+ self._tb.SetPopupText(self._popuptext)
525
+
526
+ if self._tbstyle == TB_COMPLEX:
527
+ if self._panel is not None:
528
+ self._tb.AddPanel(self._panel)
529
+
530
+ # clean up the list
531
+ self.CleanList()
532
+
533
+ # check to see if there is already a window displayed
534
+ # by looking at the linked list
535
+ if len(winlist) > 0:
536
+ # there ARE other windows displayed already
537
+ # reclac where it should display
538
+ self.MoveAbove(self._tb)
539
+
540
+ # shift new window on to the list
541
+ winlist.append(self._tb)
542
+
543
+ if not self._tb.Play():
544
+ # if we didn't show the window properly, remove it from the list
545
+ winlist.remove(winlist[-1])
546
+ # delete the object too
547
+ self._tb.Destroy()
548
+ return
549
+
550
+
551
+ def MoveAbove(self, tb):
552
+ """
553
+ If a :class:`ToasterBox` already exists, move the new one above the existing one.
554
+
555
+ :param `tb`: another instance of :class:`ToasterBox`.
556
+ """
557
+
558
+ # recalc where to place this popup
559
+
560
+ self._tb.SetPopupPosition((self._popupposition[0], self._popupposition[1] -
561
+ self._popupsize[1]*len(winlist)))
562
+
563
+
564
+ def GetToasterBoxWindow(self):
565
+ """ Returns the :class:`ToasterBox` frame. """
566
+
567
+ return self._tb
568
+
569
+
570
+ def SetTitle(self, title):
571
+ """
572
+ Sets the :class:`ToasterBox` title if it was created with ``TB_CAPTION`` window style.
573
+
574
+ :param `title`: the :class:`ToasterBox` caption title.
575
+ """
576
+
577
+ self._tb.SetTitle(title)
578
+
579
+
580
+ def SetUseFocus(self, focus):
581
+ """
582
+ If `focus` is ``True``, Instructs :class:`ToasterBox` to steal the focus from the
583
+ parent application, otherwise it returns the focus to the original owner.
584
+
585
+ :param `focus`: ``True`` to set the focus on :class:`ToasterBox`, ``False`` to
586
+ return it to the original owner.
587
+ """
588
+
589
+ self._usefocus = focus
590
+
591
+
592
+ def GetUseFocus(self):
593
+ """ Returns whether :class:`ToasterBox` will steal the focus from the parent application. """
594
+
595
+ return self._usefocus
596
+
597
+
598
+ def Notify(self):
599
+ """ It's time to hide a :class:`ToasterBox`. """
600
+
601
+ if len(winlist) == 0:
602
+ return
603
+
604
+ # clean the window list
605
+ self.CleanList()
606
+
607
+ # figure out how many blanks we have
608
+ try:
609
+ node = winlist[0]
610
+ except:
611
+ return
612
+
613
+ if not node:
614
+ return
615
+
616
+ self._startPos = node.GetPosition()[1]
617
+ self._moveTimer.Start(self._sleeptime)
618
+
619
+
620
+ def OnMoveTimer(self, event):
621
+ """
622
+ Handles the ``wx.EVT_TIMER`` event for :class:`ToasterBox`, moving the new window
623
+ on top of the last one created.
624
+
625
+ :param `event`: a :class:`TimerEvent` event to be processed.
626
+ """
627
+
628
+ current = self._startPos
629
+ if current >= self._popupposition[1]:
630
+ self._moveTimer.Stop()
631
+
632
+ # move windows to fill in blank space
633
+
634
+ if current > self._popupposition[1]:
635
+ current = self._popupposition[1]
636
+
637
+ # loop through all the windows
638
+ for j in range(0, len(winlist)):
639
+ ourNewHeight = current - (j*self._popupsize[1] - 8)
640
+ tmpTb = winlist[j]
641
+ # reset where the object THINKS its supposed to be
642
+ tmpTb.SetPopupPosition((self._popupposition[0], ourNewHeight))
643
+ # actually move it
644
+ tmpTb.SetSize(self._popupposition[0], ourNewHeight, tmpTb.GetSize().GetWidth(),
645
+ tmpTb.GetSize().GetHeight())
646
+
647
+ self._startPos += 4
648
+
649
+
650
+ def CleanList(self):
651
+ """ Cleans the window list, erasing the stack of :class:`ToasterBox` objects. """
652
+
653
+ if len(winlist) == 0:
654
+ return
655
+
656
+ node = winlist[0]
657
+ while node:
658
+ if not node.IsShown():
659
+ winlist.remove(node)
660
+ node.Close()
661
+ try:
662
+ node = winlist[0]
663
+ except:
664
+ node = 0
665
+ else:
666
+ indx = winlist.index(node)
667
+ try:
668
+ node = winlist[indx+1]
669
+ except:
670
+ node = 0
671
+
672
+
673
+ # ------------------------------------------------------------------------------ #
674
+ # Class ToasterBoxWindow
675
+ # This Class Does All The Job, By Handling Background Images, Text Properties
676
+ # And Panel Adding. Depending On The Style You Choose, ToasterBoxWindow Will
677
+ # Behave Differently In Order To Handle Widgets Inside It.
678
+ # ------------------------------------------------------------------------------ #
679
+
680
+ class ToasterBoxWindow(wx.Frame):
681
+ """
682
+ This class does all the job, by handling background images, text properties
683
+ and panel adding. Depending on the style you choose, :class:`ToasterBoxWindow` will
684
+ behave differently in order to handle widgets inside it.
685
+ """
686
+
687
+ def __init__(self, parent, parent2, tbstyle, windowstyle, closingstyle,
688
+ scrollType=TB_SCR_TYPE_DU):
689
+ """
690
+ Default class constructor.
691
+ Used internally. Do not call directly this class in your application!
692
+
693
+ :param `parent`: the window parent;
694
+ :param `parent2`: the :class:`ToasterBox` calling this window;
695
+ :param `tbstyle`: the :class:`ToasterBoxWindow` main style. Can be one of the following
696
+ bits:
697
+
698
+ ====================== ======= ================================
699
+ `ToasterBox` Style Value Description
700
+ ====================== ======= ================================
701
+ ``TB_SIMPLE`` 0x1 A simple :class:`ToasterBox`, with background image and text customization can be created
702
+ ``TB_COMPLEX`` 0x2 `ToasterBoxes` with different degree of complexity can be created. You can add as many controls as you want, provided that you call the :meth:`~ToasterBoxWindow.AddPanel` method and pass to it a dummy frame and a :class:`Panel`.
703
+ ====================== ======= ================================
704
+
705
+ :param `windowstyle`: this parameter influences the visual appearance of
706
+ :class:`ToasterBoxWindow`, and can be one of the following styles:
707
+
708
+ ====================== ========== ================================
709
+ Window Style Hex Value Description
710
+ ====================== ========== ================================
711
+ ``TB_DEFAULT_STYLE`` 0x2008002 Default window style for :class:`ToasterBox`, with no caption nor close box.
712
+ ``TB_CAPTION`` 0x22009806 :class:`ToasterBox` will have a caption, with the possibility to set a title for the :class:`ToasterBox` frame, and a close box.
713
+ ====================== ========== ================================
714
+
715
+ :param `closingstyle`: the closing style for :class:`ToasterBoxWindow`. Can be one of the
716
+ following bits:
717
+
718
+ ==================== =========== ==================================================
719
+ Closing Styles Hex Value Description
720
+ ==================== =========== ==================================================
721
+ ``TB_ONTIME`` 0x1 :class:`ToasterBox` will close after a specified amount of time.
722
+ ``TB_ONCLICK`` 0x2 :class:`ToasterBox` can be closed by clicking anywhere on the :class:`ToasterBox` frame.
723
+ ==================== =========== ==================================================
724
+
725
+ :param `scrollType`: the scrolling direction for :class:`ToasterBoxWindow`. Can be one of the
726
+ following bits:
727
+
728
+ ==================== =========== ==================================================
729
+ Scroll Styles Hex Value Description
730
+ ==================== =========== ==================================================
731
+ ``TB_SCR_TYPE_UD`` 0x1 :class:`ToasterBox` will scroll from up to down
732
+ ``TB_SCR_TYPE_DU`` 0x2 :class:`ToasterBox` will scroll from down to up
733
+ ``TB_SCR_TYPE_FADE`` 0x4 :class:`ToasterBox` will fade in/out (without scrolling).
734
+ ==================== =========== ==================================================
735
+
736
+ """
737
+
738
+ wx.Frame.__init__(self, parent, wx.ID_ANY, "window", wx.DefaultPosition,
739
+ wx.DefaultSize, style=windowstyle | wx.CLIP_CHILDREN)
740
+
741
+ self._starttime = int(time.time())
742
+ self._parent2 = parent2
743
+ self._parent = parent
744
+ self._sleeptime = 10
745
+ self._step = 4
746
+ self._pausetime = 1700
747
+ self._textcolour = wx.BLACK
748
+ self._popuptext = "Change Me!"
749
+ # the size we want the dialog to be
750
+ framesize = wx.Size(150, 170)
751
+ self._count = 1
752
+ self._tbstyle = tbstyle
753
+ self._windowstyle = windowstyle
754
+ self._closingstyle = closingstyle
755
+ self._backgroundcolour = wx.WHITE
756
+
757
+ if tbstyle == TB_COMPLEX:
758
+ self.sizer = wx.BoxSizer(wx.VERTICAL)
759
+ else:
760
+ self._staticbitmap = None
761
+
762
+ if self._windowstyle == TB_CAPTION:
763
+ self.Bind(wx.EVT_CLOSE, self.OnClose)
764
+ self.SetTitle("")
765
+
766
+ if scrollType == TB_SCR_TYPE_FADE and not self.CanSetTransparent():
767
+ import warnings
768
+ warnings.warn("The style ``TB_SCR_TYPE_FADE`` is not supported on this platform.")
769
+ scrollType = TB_SCR_TYPE_DU
770
+
771
+ self._scrollType = scrollType
772
+
773
+ if self._closingstyle & TB_ONCLICK and self._windowstyle != TB_CAPTION:
774
+ self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseDown)
775
+
776
+ self._bottomright = wx.Point(wx.GetDisplaySize().GetWidth(),
777
+ wx.GetDisplaySize().GetHeight())
778
+
779
+ self.SetSize(self._bottomright.x, self._bottomright.y,
780
+ framesize.GetWidth(), framesize.GetHeight())
781
+
782
+ self._scrollTimer = wx.Timer(self, -1)
783
+ self._alphaTimer = wx.Timer(self, -1)
784
+
785
+ self.Bind(wx.EVT_TIMER, self.OnScrollTimer, self._scrollTimer)
786
+ self.Bind(wx.EVT_TIMER, self.AlphaCycle, self._alphaTimer)
787
+
788
+ if not self._tbstyle & TB_COMPLEX:
789
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
790
+ self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
791
+
792
+
793
+ def OnClose(self, event):
794
+ """
795
+ Handles the ``wx.EVT_CLOSE`` event for :class:`ToasterBoxWindow`.
796
+
797
+ :param `event`: a :class:`CloseEvent` event to be processed.
798
+ """
799
+
800
+ self.NotifyTimer(None)
801
+ event.Skip()
802
+
803
+
804
+ def OnMouseDown(self, event):
805
+ """
806
+ Handles the ``wx.EVT_LEFT_DOWN`` event for :class:`ToasterBoxWindow`.
807
+
808
+ :param `event`: a :class:`MouseEvent` event to be processed.
809
+ """
810
+
811
+ self.NotifyTimer(None)
812
+ event.Skip()
813
+
814
+
815
+ def SetPopupBitmap(self, bitmap=None):
816
+ """
817
+ Sets the :class:`ToasterBox` background image.
818
+
819
+ :param `bitmap`: a valid :class:`wx.Bitmap` object. If defaulted to ``None``, then
820
+ no background bitmap is used.
821
+
822
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
823
+ """
824
+
825
+ if bitmap is None:
826
+ self._staticbitmap = None
827
+ else:
828
+ bitmap = bitmap.ConvertToImage()
829
+ xsize, ysize = self.GetSize()
830
+ bitmap = bitmap.Scale(xsize, ysize)
831
+ self._staticbitmap = bitmap.ConvertToBitmap()
832
+
833
+
834
+ def SetPopupSize(self, size):
835
+ """
836
+ Sets the :class:`ToasterBox` size.
837
+
838
+ :param `size`: the new control size, an instance of :class:`wx.Size`.
839
+ """
840
+
841
+ self.SetSize(self._bottomright.x, self._bottomright.y, size[0], size[1])
842
+
843
+
844
+ def SetPopupPosition(self, pos):
845
+ """
846
+ Sets the :class:`ToasterBox` position on screen.
847
+
848
+ :param `pos`: the widget position, an instance of :class:`wx.Point`.
849
+ """
850
+
851
+ self._bottomright = wx.Point(pos[0] + self.GetSize().GetWidth(),
852
+ pos[1] + self.GetSize().GetHeight())
853
+ self._dialogtop = pos
854
+
855
+
856
+ def SetPopupPositionByInt(self, pos):
857
+ """
858
+ Sets the :class:`ToasterBox` position on screen, at one of the screen corners.
859
+
860
+ :param `pos`: an integer specifying the screen corner, namely:
861
+
862
+ ============= ========================================
863
+ Corner Number Position
864
+ ============= ========================================
865
+ 0 Top left screen corner
866
+ 1 Top right screen corner
867
+ 2 Bottom left screen corner
868
+ 3 Bottom right screen corner
869
+ ============= ========================================
870
+
871
+ """
872
+
873
+ w, h = wx.GetDisplaySize()
874
+ self._bottomright = wx.Point(w, h)
875
+
876
+ # top left
877
+ if pos == 0:
878
+ popupposition = wx.Point(0, 0)
879
+ # top right
880
+ elif pos == 1:
881
+ popupposition = wx.Point(w - self._popupsize[0], 0)
882
+ # bottom left
883
+ elif pos == 2:
884
+ popupposition = wx.Point(0, h - self._popupsize[1])
885
+ # bottom right
886
+ elif pos == 3:
887
+ popupposition = wx.Point(self._bottomright.x - self._popupsize[0],
888
+ self._bottomright.y - self._popupsize[1])
889
+
890
+ self._bottomright = wx.Point(popupposition.x + self._popupsize[0],
891
+ popupposition.y + self._popupsize[1])
892
+
893
+ self._dialogtop = popupposition
894
+
895
+
896
+ def SetPopupPauseTime(self, pausetime):
897
+ """
898
+ Sets the time after which the :class:`ToasterBox` is destroyed (linger).
899
+
900
+ :param `pausetime`: the delay after which the control is destroyed, in seconds.
901
+ """
902
+
903
+ self._pausetime = pausetime
904
+
905
+
906
+ def SetPopupScrollSpeed(self, speed):
907
+ """
908
+ Sets the :class:`ToasterBox` scroll speed.
909
+
910
+ :param `speed`: it is the pause time (in milliseconds) for every step in the
911
+ :meth:`~ToasterBoxWindow.ScrollUp` method.
912
+ """
913
+
914
+ self._sleeptime = speed
915
+
916
+
917
+ def AddPanel(self, panel):
918
+ """
919
+ Adds a panel to the :class:`ToasterBox`.
920
+
921
+ :param `panel`: an instance of :class:`wx.Window`.
922
+
923
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_COMPLEX`` style.
924
+ """
925
+
926
+ if not self._tbstyle & TB_COMPLEX:
927
+ raise Exception("\nERROR: Panel Can Not Be Added When Using TB_SIMPLE ToasterBox Style")
928
+
929
+ self.sizer.Add(panel, 1, wx.EXPAND)
930
+ self.SetSizer(self.sizer)
931
+ self.Layout()
932
+
933
+ if self._closingstyle & TB_ONCLICK and self._windowstyle != TB_CAPTION:
934
+ panel.Bind(wx.EVT_LEFT_DOWN, self.OnMouseDown)
935
+
936
+
937
+ def SetPopupText(self, text):
938
+ """
939
+ Sets the :class:`ToasterBox` text label.
940
+
941
+ :param `text`: the widget label.
942
+
943
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
944
+ """
945
+
946
+ self._popuptext = text
947
+
948
+
949
+ def SetPopupTextFont(self, font):
950
+ """
951
+ Sets the :class:`ToasterBox` text font.
952
+
953
+ :param `colour`: a valid :class:`wx.Colour` object. If defaulted to ``None``, then
954
+ a simple generic font will be generated.
955
+
956
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
957
+ """
958
+
959
+ self._textfont = font
960
+
961
+
962
+ def GetPopupText(self):
963
+ """
964
+ Returns the :class:`ToasterBox` text.
965
+
966
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
967
+ """
968
+
969
+ return self._popuptext
970
+
971
+
972
+ def Play(self):
973
+ """ Creates the :class:`ToasterBoxWindow`, that does all the job. """
974
+
975
+ # do some checks to make sure this window is valid
976
+ if self._bottomright.x < 1 or self._bottomright.y < 1:
977
+ return False
978
+
979
+ if self.GetSize().GetWidth() < 50 or self.GetSize().GetWidth() < 50:
980
+ # toasterbox launches into a endless loop for some reason
981
+ # when you try to make the window too small.
982
+ return False
983
+
984
+ self._direction = wx.UP
985
+ self.SetupPositions()
986
+ self.ScrollUp()
987
+ timerid = wx.NewIdRef()
988
+ self.showtime = wx.Timer(self, timerid)
989
+ self.showtime.Start(self._pausetime)
990
+ self.Bind(wx.EVT_TIMER, self.NotifyTimer, id=timerid)
991
+
992
+ return True
993
+
994
+
995
+ def NotifyTimer(self, event):
996
+ """ Hides gradually the :class:`ToasterBoxWindow`. """
997
+
998
+ if self._scrollType != TB_SCR_TYPE_FADE:
999
+ self.showtime.Stop()
1000
+ del self.showtime
1001
+
1002
+ self._direction = wx.DOWN
1003
+ self.SetupPositions()
1004
+
1005
+ self.ScrollDown()
1006
+
1007
+
1008
+ def SetPopupBackgroundColour(self, colour):
1009
+ """
1010
+ Sets the :class:`ToasterBox` background colour.
1011
+
1012
+ :param `colour`: a valid :class:`wx.Colour` object. If defaulted to ``None``, then
1013
+ the background colour will be white.
1014
+
1015
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
1016
+ """
1017
+
1018
+ self.SetBackgroundColour(colour)
1019
+ self._backgroundcolour = colour
1020
+
1021
+
1022
+ def SetPopupTextColour(self, colour):
1023
+ """
1024
+ Sets the :class:`ToasterBox` foreground colour.
1025
+
1026
+ :param `colour`: a valid :class:`wx.Colour` object. If defaulted to ``None``, then
1027
+ the background colour will be black.
1028
+
1029
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
1030
+ """
1031
+
1032
+ self._textcolour = colour
1033
+
1034
+
1035
+ def SetUseFocus(self, focus, originalfocus):
1036
+ """
1037
+ If `focus` is ``True``, Instructs :class:`ToasterBoxWindow` to steal the focus from the
1038
+ parent application, otherwise it returns the focus to the original owner.
1039
+
1040
+ :param `focus`: ``True`` to set the focus on :class:`ToasterBoxWindow`, ``False`` to
1041
+ return it to the original owner;
1042
+ :param `originalfocus`: an instance of :class:`wx.Window`, representing a pointer to
1043
+ the window which originally had the focus
1044
+ """
1045
+
1046
+ self._usefocus = focus
1047
+ self._originalfocus = originalfocus
1048
+
1049
+
1050
+ def OnScrollTimer(self, event):
1051
+ """
1052
+ Handles the ``wx.EVT_TIMER`` event for :class:`ToasterBoxWindow` scrolling up/down.
1053
+
1054
+ :param `event`: a :class:`TimerEvent` event to be processed.
1055
+ """
1056
+
1057
+ if self._direction == wx.UP:
1058
+ self.TearUp()
1059
+ else:
1060
+ self.TearDown()
1061
+
1062
+
1063
+ def TearUp(self):
1064
+ """ Scrolls the :class:`ToasterBox` up, which means gradually showing it. """
1065
+
1066
+ self._windowsize = self._windowsize + self._step
1067
+ step = self._currentStep
1068
+
1069
+ if step < self._dialogtop[1]:
1070
+ step = self._dialogtop[1]
1071
+
1072
+ # checking the type of the scroll (from up to down or from down to up)
1073
+ if self._scrollType == TB_SCR_TYPE_UD:
1074
+ dimY = self._dialogtop[1]
1075
+ elif self._scrollType == TB_SCR_TYPE_DU:
1076
+ dimY = step
1077
+
1078
+ self.SetSize(self._dialogtop[0], dimY, self.GetSize().GetWidth(), self._windowsize)
1079
+
1080
+ self.Refresh(False)
1081
+
1082
+ self._currentStep += self._scrollStep
1083
+
1084
+ if self._currentStep not in list(range(self._start, self._stop, self._scrollStep)):
1085
+ self._scrollTimer.Stop()
1086
+ self.Update()
1087
+
1088
+ if self._tbstyle == TB_SIMPLE:
1089
+ self.DrawText()
1090
+
1091
+ if self._usefocus:
1092
+ self.SetFocus()
1093
+ else:
1094
+ self._originalfocus.SetFocus()
1095
+
1096
+
1097
+ def TearDown(self):
1098
+ """ Scrolls the :class:`ToasterBox` down, which means gradually hiding it. """
1099
+
1100
+ self._windowsize = self._windowsize - self._step
1101
+ step = self._currentStep
1102
+
1103
+ if step > self._bottomright.y:
1104
+ step = self._bottomright.y
1105
+
1106
+ if self._windowsize > 0:
1107
+ # checking the type of the scroll (from up to down or from down to up)
1108
+ if self._scrollType == TB_SCR_TYPE_UD:
1109
+ dimY = self._dialogtop[1]
1110
+ elif self._scrollType == TB_SCR_TYPE_DU:
1111
+ dimY = step
1112
+
1113
+ self.SetSize(self._dialogtop[0], dimY,
1114
+ self.GetSize().GetWidth(), self._windowsize)
1115
+
1116
+ self.Update()
1117
+ self.Refresh()
1118
+
1119
+ self._currentStep += self._scrollStep
1120
+
1121
+ else:
1122
+ self._scrollTimer.Stop()
1123
+ self.Hide()
1124
+ if self._parent2:
1125
+ self._parent2.Notify()
1126
+
1127
+
1128
+ def SetupPositions(self):
1129
+ """ Sets up the position, size and scrolling step for :class:`ToasterBoxWindow`. """
1130
+
1131
+ if self._scrollType == TB_SCR_TYPE_FADE:
1132
+ self.SetPosition(wx.Point(*self._dialogtop))
1133
+ return
1134
+
1135
+ if self._direction == wx.UP:
1136
+ # walk the Y value up in a raise motion
1137
+ self._xpos = self.GetPosition().x
1138
+ self._ypos = self._bottomright[1]
1139
+ self._windowsize = 0
1140
+
1141
+ # checking the type of the scroll (from up to down or from down to up)
1142
+ if self._scrollType == TB_SCR_TYPE_UD:
1143
+ self._start = self._dialogtop[1]
1144
+ self._stop = self._ypos
1145
+ self._scrollStep = self._step
1146
+ elif self._scrollType == TB_SCR_TYPE_DU:
1147
+ self._start = self._ypos
1148
+ self._stop = self._dialogtop[1]
1149
+ self._scrollStep = -self._step
1150
+
1151
+ else:
1152
+
1153
+ # walk down the Y value
1154
+ self._windowsize = self.GetSize().GetHeight()
1155
+
1156
+ # checking the type of the scroll (from up to down or from down to up)
1157
+ if self._scrollType == TB_SCR_TYPE_UD:
1158
+ self._start = self._bottomright.y
1159
+ self._stop = self._dialogtop[1]
1160
+ self._scrollStep = -self._step
1161
+ elif self._scrollType == TB_SCR_TYPE_DU:
1162
+ self._start = self._dialogtop[1]
1163
+ self._stop = self._bottomright.y
1164
+ self._scrollStep = self._step
1165
+
1166
+ self._currentStep = self._start
1167
+
1168
+
1169
+ def ScrollUp(self):
1170
+ """ Scrolls the :class:`ToasterBox` up, which means gradually showing it. """
1171
+
1172
+ if self._scrollType == TB_SCR_TYPE_FADE:
1173
+ self._amount = 0
1174
+ self._delta = 5
1175
+ self.SetSize(self.GetSize())
1176
+ self._alphaTimer.Start(self._sleeptime)
1177
+ else:
1178
+ self.Show(True)
1179
+ self._scrollTimer.Start(self._sleeptime)
1180
+
1181
+
1182
+ def ScrollDown(self):
1183
+ """ Scrolls the :class:`ToasterBox` down, which means gradually hiding it. """
1184
+
1185
+ if self._scrollType == TB_SCR_TYPE_FADE:
1186
+ self._amount = 255
1187
+ self._delta = -5
1188
+ self._alphaTimer.Start(self._sleeptime)
1189
+ else:
1190
+ self._scrollTimer.Start(self._sleeptime)
1191
+
1192
+
1193
+ def OnPaint(self, event):
1194
+ """
1195
+ Handles the ``wx.EVT_PAINT`` event for :class:`ToasterBoxWindow`.
1196
+
1197
+ :param `event`: a :class:`PaintEvent` event to be processed.
1198
+
1199
+ :note: This event is handled and processed only if the style ``TB_SIMPLE`` is
1200
+ given to :class:`ToasterBox`.
1201
+ """
1202
+
1203
+ dc = wx.AutoBufferedPaintDC(self)
1204
+ self.DrawText(dc)
1205
+
1206
+
1207
+ def DrawText(self, dc=None):
1208
+ """
1209
+ Draws the text label for a :class:`ToasterBox` with ``TB_SIMPLE`` style set.
1210
+
1211
+ :param `dc`: an instance of :class:`wx.DC`. If defaulted to ``None``, a :class:`ClientDC`
1212
+ will be created on the fly.
1213
+ """
1214
+
1215
+ if dc is None:
1216
+ dc = wx.ClientDC(self)
1217
+
1218
+ dc.SetBackground(wx.Brush(self._backgroundcolour))
1219
+ dc.Clear()
1220
+
1221
+ if self._staticbitmap:
1222
+ dc.DrawBitmap(self._staticbitmap, 0, 0)
1223
+ dc.SetFont(self._textfont)
1224
+ dc.SetTextForeground(self._textcolour)
1225
+
1226
+ if not hasattr(self, "text_coords"):
1227
+ self._getTextCoords(dc)
1228
+ dc.DrawTextList(*self.text_coords)
1229
+
1230
+
1231
+ def AlphaCycle(self, event):
1232
+ """
1233
+ Handles the ``wx.EVT_TIMER`` event for :class:`ToasterBoxWindow`.
1234
+
1235
+ :param `event`: a :class:`TimerEvent` event to be processed.
1236
+ """
1237
+
1238
+ # Increase (or decrease) the alpha channel
1239
+ self._amount += self._delta
1240
+
1241
+ if self._tbstyle == TB_SIMPLE:
1242
+ self.Refresh(False)
1243
+
1244
+ if self._amount > 255 or self._amount < 0:
1245
+ # We're done, stop the timer
1246
+ self._alphaTimer.Stop()
1247
+
1248
+ if self._amount < 0:
1249
+ self.Hide()
1250
+ self.showtime.Stop()
1251
+ if self._parent2:
1252
+ self._parent2.Notify()
1253
+
1254
+ elif self._amount > 255:
1255
+ if self._usefocus:
1256
+ self.SetFocus()
1257
+ else:
1258
+ self._originalfocus.SetFocus()
1259
+
1260
+ return
1261
+
1262
+ # Make the ToasterBoxWindow more or less transparent
1263
+ self.MakeWindowTransparent(self._amount)
1264
+ if not self.IsShown():
1265
+ self.Show()
1266
+
1267
+
1268
+ def MakeWindowTransparent(self, amount):
1269
+ """
1270
+ Makes the :class:`ToasterBoxWindow` window transparent.
1271
+
1272
+ :param `amount`: the alpha channel value.
1273
+ """
1274
+
1275
+ if not self.CanSetTransparent():
1276
+ return
1277
+
1278
+ self.SetTransparent(amount)
1279
+
1280
+
1281
+ def _getTextCoords(self, dc):
1282
+ """
1283
+ Draw the user specified text.
1284
+
1285
+ :param `dc`: an instance of :class:`wx.DC`.
1286
+
1287
+ :note: Use this method only for a :class:`ToasterBox` created with the ``TB_SIMPLE`` style.
1288
+ """
1289
+
1290
+ # border from sides and top to text (in pixels)
1291
+ border = 7
1292
+ # how much space between text lines
1293
+ textPadding = 2
1294
+
1295
+ pText = self.GetPopupText()
1296
+
1297
+ max_len = len(pText)
1298
+
1299
+ tw, th = self._parent2._popupsize
1300
+
1301
+ if self._windowstyle == TB_CAPTION:
1302
+ th = th - 20
1303
+
1304
+ while 1:
1305
+ lines = textwrap.wrap(pText, max_len)
1306
+
1307
+ for line in lines:
1308
+ w, h = dc.GetTextExtent(line)
1309
+ if w > tw - border * 2:
1310
+ max_len -= 1
1311
+ break
1312
+ else:
1313
+ break
1314
+
1315
+ fh = 0
1316
+ for line in lines:
1317
+ w, h = dc.GetTextExtent(line)
1318
+ fh += h + textPadding
1319
+ y = (th - fh) / 2; coords = []
1320
+
1321
+ for line in lines:
1322
+ w, h = dc.GetTextExtent(line)
1323
+ x = (tw - w) / 2
1324
+ coords.append((x, y))
1325
+ y += h + textPadding
1326
+
1327
+ self.text_coords = (lines, coords)