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
wx/demo/Joystick.py ADDED
@@ -0,0 +1,1083 @@
1
+ #!/usr/bin/env python
2
+
3
+ #----------------------------------------------------------------------------
4
+ # Name: Joystick.py
5
+ # Purpose: Demonstrate use of wx.adv.Joystick
6
+ #
7
+ # Author: Jeff Grimmett (grimmtoo@softhome.net), adapted from original
8
+ # .wdr-derived demo
9
+ #
10
+ # Created: 02-Jan-2004
11
+ # Copyright:
12
+ # Licence: wxWindows license
13
+ #----------------------------------------------------------------------------
14
+
15
+
16
+ import math
17
+ import wx
18
+ import wx.adv
19
+
20
+
21
+ #----------------------------------------------------------------------------
22
+
23
+ # Once all supported versions of Python support 32-bit integers on all
24
+ # platforms, this can go up to 32.
25
+ MAX_BUTTONS = 16
26
+
27
+ #----------------------------------------------------------------------------
28
+
29
+ class Label(wx.StaticText):
30
+ # A derived StaticText that always aligns right and renders
31
+ # in a bold font.
32
+ def __init__(self, parent, label):
33
+ wx.StaticText.__init__(self, parent, -1, label, style=wx.ALIGN_RIGHT)
34
+
35
+ f = parent.GetFont()
36
+ f.SetWeight(wx.FONTWEIGHT_BOLD)
37
+ self.SetFont(f)
38
+
39
+ #----------------------------------------------------------------------------
40
+
41
+
42
+ class JoyGauge(wx.Panel):
43
+ def __init__(self, parent, stick):
44
+
45
+ self.stick = stick
46
+ size = (100,100)
47
+
48
+ wx.Panel.__init__(self, parent, -1, size=size)
49
+
50
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
51
+ self.Bind(wx.EVT_SIZE, self.OnSize)
52
+ self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None)
53
+
54
+ self.buffer = wx.Bitmap(*size)
55
+ dc = wx.BufferedDC(None, self.buffer)
56
+ self.DrawFace(dc)
57
+ self.DrawJoystick(dc)
58
+
59
+
60
+ def OnSize(self, event):
61
+ # The face Bitmap init is done here, to make sure the buffer is always
62
+ # the same size as the Window
63
+ w, h = self.GetClientSize()
64
+ self.buffer = wx.Bitmap(w,h)
65
+ dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
66
+ self.DrawFace(dc)
67
+ self.DrawJoystick(dc)
68
+
69
+ def DrawFace(self, dc):
70
+ dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
71
+ dc.Clear()
72
+
73
+ def OnPaint(self, evt):
74
+ # When dc is destroyed it will blit self.buffer to the window,
75
+ # since no other drawing is needed we'll just return and let it
76
+ # do it's thing
77
+ dc = wx.BufferedPaintDC(self, self.buffer)
78
+
79
+ def DrawJoystick(self, dc):
80
+ # draw the gauge as a maxed square in the center of this window.
81
+ w, h = self.GetClientSize()
82
+ edgeSize = min(w, h)
83
+
84
+ xorigin = (w - edgeSize) / 2
85
+ yorigin = (h - edgeSize) / 2
86
+ center = edgeSize / 2
87
+
88
+ # Restrict our drawing activities to the square defined
89
+ # above.
90
+ dc.SetClippingRegion(xorigin, yorigin, edgeSize, edgeSize)
91
+
92
+ dc.SetBrush(wx.Brush(wx.Colour(251, 252, 237)))
93
+ dc.DrawRectangle(xorigin, yorigin, edgeSize, edgeSize)
94
+
95
+ dc.SetPen(wx.Pen(wx.BLACK, 1, wx.PENSTYLE_DOT_DASH))
96
+
97
+ dc.DrawLine(xorigin, yorigin + center, xorigin + edgeSize, yorigin + center)
98
+ dc.DrawLine(xorigin + center, yorigin, xorigin + center, yorigin + edgeSize)
99
+
100
+ if self.stick:
101
+ # Get the joystick position as a float
102
+ joyx = float(self.stick.GetPosition().x)
103
+ joyy = float(self.stick.GetPosition().y)
104
+
105
+ # Get the joystick range of motion
106
+ xmin = self.stick.GetXMin()
107
+ xmax = self.stick.GetXMax()
108
+ if xmin < 0:
109
+ xmax += abs(xmin)
110
+ joyx += abs(xmin)
111
+ xmin = 0
112
+ xrange = max(xmax - xmin, 1)
113
+
114
+ ymin = self.stick.GetYMin()
115
+ ymax = self.stick.GetYMax()
116
+ if ymin < 0:
117
+ ymax += abs(ymin)
118
+ joyy += abs(ymin)
119
+ ymin = 0
120
+ yrange = max(ymax - ymin, 1)
121
+
122
+ # calc a ratio of our range versus the joystick range
123
+ xratio = float(edgeSize) / xrange
124
+ yratio = float(edgeSize) / yrange
125
+
126
+ # calc the displayable value based on position times ratio
127
+ xval = int(joyx * xratio)
128
+ yval = int(joyy * yratio)
129
+
130
+ # and normalize the value from our brush's origin
131
+ x = xval + xorigin
132
+ y = yval + yorigin
133
+
134
+ # Now to draw it.
135
+ dc.SetPen(wx.Pen(wx.RED, 2))
136
+ dc.DrawLine(x, 0, x, h)
137
+ dc.DrawLine(0, y, w, y)
138
+
139
+
140
+ def Update(self):
141
+ dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
142
+ self.DrawFace(dc)
143
+ self.DrawJoystick(dc)
144
+
145
+
146
+ #----------------------------------------------------------------------------
147
+
148
+ class JoyPanel(wx.Panel):
149
+ def __init__(self, parent, stick):
150
+
151
+ self.stick = stick
152
+
153
+ wx.Panel.__init__(self, parent, -1)
154
+
155
+ sizer = wx.BoxSizer(wx.VERTICAL)
156
+
157
+ fn = parent.GetFont()
158
+ fn.SetPointSize(fn.GetPointSize() + 3)
159
+ fn.SetWeight(wx.FONTWEIGHT_BOLD)
160
+
161
+ t = wx.StaticText(self, -1, "X - Y Axes", style = wx.ALIGN_CENTRE)
162
+ t.SetFont(fn)
163
+ sizer.Add(t, 0, wx.ALL | wx.EXPAND, 1)
164
+
165
+ self.control = JoyGauge(self, self.stick)
166
+ sizer.Add(self.control, 1, wx.ALL | wx.EXPAND, 1)
167
+
168
+ self.SetSizer(sizer)
169
+ sizer.Fit(self)
170
+
171
+ def Update(self):
172
+ self.control.Update()
173
+
174
+
175
+ #----------------------------------------------------------------------------
176
+
177
+ class POVGauge(wx.Panel):
178
+ #
179
+ # Display the current position of the POV control
180
+ #
181
+ def __init__(self, parent, stick):
182
+
183
+ self.stick = stick
184
+ self.size = (100, 100)
185
+ self.avail = False
186
+ self.fourDir = False
187
+ self.cts = False
188
+
189
+ wx.Panel.__init__(self, parent, -1, size=self.size)
190
+
191
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
192
+ self.Bind(wx.EVT_SIZE, self.OnSize)
193
+ self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None)
194
+
195
+ self.buffer = wx.Bitmap(*self.size)
196
+ dc = wx.BufferedDC(None, self.buffer)
197
+ self.DrawFace(dc)
198
+ self.DrawPOV(dc)
199
+
200
+
201
+ def OnSize(self, event):
202
+ # calculate the size of our display and make a buffer for it.
203
+ w, h = self.GetClientSize()
204
+ s = min(w, h)
205
+ self.size = (s, s)
206
+ self.buffer = wx.Bitmap(w,h)
207
+ dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
208
+ self.DrawFace(dc)
209
+ self.DrawPOV(dc)
210
+
211
+ def DrawFace(self, dc):
212
+ dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
213
+ dc.Clear()
214
+
215
+ def OnPaint(self, evt):
216
+ # When dc is destroyed it will blit self.buffer to the window,
217
+ # since no other drawing is needed we'll just return and let it
218
+ # do it's thing
219
+ dc = wx.BufferedPaintDC(self, self.buffer)
220
+
221
+ def DrawPOV(self, dc):
222
+ # draw the gauge as a maxed circle in the center of this window.
223
+ w, h = self.GetClientSize()
224
+ diameter = min(w, h)
225
+
226
+ xorigin = (w - diameter) / 2
227
+ yorigin = (h - diameter) / 2
228
+ xcenter = xorigin + diameter / 2
229
+ ycenter = yorigin + diameter / 2
230
+
231
+ # our 'raster'.
232
+ dc.SetBrush(wx.Brush(wx.WHITE))
233
+ dc.DrawCircle(xcenter, ycenter, diameter/2)
234
+ dc.SetBrush(wx.Brush(wx.BLACK))
235
+ dc.DrawCircle(xcenter, ycenter, 10)
236
+
237
+ # fancy decorations
238
+ dc.SetPen(wx.Pen(wx.BLACK, 1, wx.PENSTYLE_DOT_DASH))
239
+ dc.DrawLine(xorigin, ycenter, xorigin + diameter, ycenter)
240
+ dc.DrawLine(xcenter, yorigin, xcenter, yorigin + diameter)
241
+
242
+ if self.stick:
243
+ if self.avail:
244
+
245
+ pos = -1
246
+
247
+ # use the appropriate function to get the POV position
248
+ if self.fourDir:
249
+ pos = self.stick.GetPOVPosition()
250
+
251
+ if self.cts:
252
+ pos = self.stick.GetPOVCTSPosition()
253
+
254
+ # trap invalid values
255
+ if 0 <= pos <= 36000:
256
+ vector = 30
257
+ else:
258
+ vector = 0
259
+
260
+ # rotate CCW by 90 so that 0 is up.
261
+ pos = (pos / 100) - 90
262
+
263
+ # Normalize
264
+ if pos < 0:
265
+ pos = pos + 360
266
+
267
+ # Stolen from wx.lib.analogclock :-)
268
+ radiansPerDegree = math.pi / 180
269
+ pointX = int(round(vector * math.cos(pos * radiansPerDegree)))
270
+ pointY = int(round(vector * math.sin(pos * radiansPerDegree)))
271
+
272
+ # normalise value to match our actual center.
273
+ nx = pointX + xcenter
274
+ ny = pointY + ycenter
275
+
276
+ # Draw the line
277
+ dc.SetPen(wx.Pen(wx.BLUE, 2))
278
+ dc.DrawLine(xcenter, ycenter, nx, ny)
279
+
280
+ # And a little thing to show the endpoint
281
+ dc.SetBrush(wx.Brush(wx.BLUE))
282
+ dc.DrawCircle(nx, ny, 8)
283
+
284
+
285
+ def Update(self):
286
+ dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
287
+ self.DrawFace(dc)
288
+ self.DrawPOV(dc)
289
+
290
+ def Calibrate(self):
291
+ s = self.stick
292
+ self.avail = s.HasPOV()
293
+ self.fourDir = s.HasPOV4Dir()
294
+ self.cts = s.HasPOVCTS()
295
+
296
+
297
+ #----------------------------------------------------------------------------
298
+
299
+ class POVStatus(wx.Panel):
300
+ #
301
+ # Displays static info about the POV control
302
+ #
303
+ def __init__(self, parent, stick):
304
+
305
+ self.stick = stick
306
+
307
+ wx.Panel.__init__(self, parent, -1, size=(100, 100))
308
+
309
+ sizer = wx.BoxSizer(wx.VERTICAL)
310
+ sizer.Add((20,20))
311
+
312
+ self.avail = wx.CheckBox(self, -1, "Available")
313
+ sizer.Add(self.avail, 0, wx.ALL | wx.EXPAND | wx.ALIGN_LEFT, 2)
314
+
315
+ self.fourDir = wx.CheckBox(self, -1, "4-Way Only")
316
+ sizer.Add(self.fourDir, 0, wx.ALL | wx.EXPAND | wx.ALIGN_LEFT, 2)
317
+
318
+ self.cts = wx.CheckBox(self, -1, "Continuous")
319
+ sizer.Add(self.cts, 0, wx.ALL | wx.EXPAND | wx.ALIGN_LEFT, 2)
320
+
321
+ self.SetSizer(sizer)
322
+ sizer.Fit(self)
323
+
324
+ # Effectively makes the checkboxes read-only.
325
+ self.Bind(wx.EVT_CHECKBOX, self.Calibrate)
326
+
327
+
328
+ def Calibrate(self, evt=None):
329
+ s = self.stick
330
+ self.avail.SetValue(s.HasPOV())
331
+ self.fourDir.SetValue(s.HasPOV4Dir())
332
+ self.cts.SetValue(s.HasPOVCTS())
333
+
334
+
335
+ #----------------------------------------------------------------------------
336
+
337
+ class POVPanel(wx.Panel):
338
+ def __init__(self, parent, stick):
339
+
340
+ self.stick = stick
341
+
342
+ wx.Panel.__init__(self, parent, -1, size=(100, 100))
343
+
344
+ sizer = wx.BoxSizer(wx.HORIZONTAL)
345
+ gsizer = wx.BoxSizer(wx.VERTICAL)
346
+
347
+ sizer.Add((25,25))
348
+
349
+ fn = parent.GetFont()
350
+ fn.SetPointSize(fn.GetPointSize() + 3)
351
+ fn.SetWeight(wx.FONTWEIGHT_BOLD)
352
+
353
+ t = wx.StaticText(self, -1, "POV Control", style = wx.ALIGN_CENTER)
354
+ t.SetFont(fn)
355
+ gsizer.Add(t, 0, wx.ALL | wx.EXPAND, 1)
356
+
357
+ self.display = POVGauge(self, stick)
358
+ gsizer.Add(self.display, 1, wx.ALL | wx.EXPAND, 1)
359
+ sizer.Add(gsizer, 1, wx.ALL | wx.EXPAND, 1)
360
+
361
+ self.status = POVStatus(self, stick)
362
+ sizer.Add(self.status, 1, wx.ALL | wx.EXPAND, 1)
363
+
364
+ self.SetSizer(sizer)
365
+ sizer.Fit(self)
366
+
367
+
368
+ def Calibrate(self):
369
+ self.display.Calibrate()
370
+ self.status.Calibrate()
371
+
372
+
373
+ def Update(self):
374
+ self.display.Update()
375
+
376
+
377
+ #----------------------------------------------------------------------------
378
+
379
+ class LED(wx.Panel):
380
+ def __init__(self, parent, number):
381
+
382
+ self.state = -1
383
+ self.size = (20, 20)
384
+ self.number = number
385
+
386
+ fn = parent.GetFont()
387
+ fn.SetPointSize(fn.GetPointSize() - 1)
388
+ fn.SetWeight(wx.FONTWEIGHT_BOLD)
389
+ self.fn = fn
390
+
391
+ wx.Panel.__init__(self, parent, -1, size=self.size)
392
+
393
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
394
+ self.Bind(wx.EVT_SIZE, self.OnSize)
395
+ self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None)
396
+
397
+ self.buffer = wx.Bitmap(*self.size)
398
+ dc = wx.BufferedDC(None, self.buffer)
399
+ self.DrawFace(dc)
400
+ self.DrawLED(dc)
401
+
402
+
403
+ def OnSize(self, event):
404
+ # calculate the size of our display.
405
+ w, h = self.GetClientSize()
406
+ s = min(w, h)
407
+ self.size = (s, s)
408
+ self.buffer = wx.Bitmap(*self.size)
409
+ dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
410
+ self.DrawFace(dc)
411
+ self.DrawLED(dc)
412
+
413
+
414
+ def DrawFace(self, dc):
415
+ dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
416
+ dc.Clear()
417
+
418
+
419
+ def OnPaint(self, evt):
420
+ # When dc is destroyed it will blit self.buffer to the window,
421
+ # since no other drawing is needed we'll just return and let it
422
+ # do it's thing
423
+ dc = wx.BufferedPaintDC(self, self.buffer)
424
+
425
+
426
+ def DrawLED(self, dc):
427
+ # bitmap size
428
+ bw, bh = self.size
429
+
430
+ # center of bitmap
431
+ center = bw / 2
432
+
433
+ # calc the 0, 0 origin of the bitmap
434
+ xorigin = center - (bw / 2)
435
+ yorigin = center - (bh / 2)
436
+
437
+ # our 'raster'.
438
+ if self.state == 0:
439
+ dc.SetBrush(wx.Brush(wx.RED))
440
+ elif self.state == 1:
441
+ dc.SetBrush(wx.Brush(wx.GREEN))
442
+ else:
443
+ dc.SetBrush(wx.Brush(wx.BLACK))
444
+
445
+ dc.DrawCircle(center, center, bw/2)
446
+
447
+ txt = str(self.number)
448
+
449
+ # Set the font for the DC ...
450
+ dc.SetFont(self.fn)
451
+ # ... and calculate how much space our value
452
+ # will take up.
453
+ fw, fh = dc.GetTextExtent(txt)
454
+
455
+ # Calc the center of the LED, and from that
456
+ # derive the origin of our value.
457
+ tx = center - (fw/2)
458
+ ty = center - (fh/2)
459
+
460
+ # I draw the value twice so as to give it a pseudo-shadow.
461
+ # This is (mostly) because I'm too lazy to figure out how
462
+ # to blit my text onto the gauge using one of the logical
463
+ # functions. The pseudo-shadow gives the text contrast
464
+ # regardless of whether the bar is under it or not.
465
+ dc.SetTextForeground(wx.WHITE)
466
+ dc.DrawText(txt, tx, ty)
467
+
468
+
469
+
470
+ def Update(self):
471
+ dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
472
+ self.DrawFace(dc)
473
+ self.DrawLED(dc)
474
+
475
+
476
+ #----------------------------------------------------------------------------
477
+
478
+ class JoyButtons(wx.Panel):
479
+ def __init__(self, parent, stick):
480
+
481
+ self.stick = stick
482
+ self.leds = {}
483
+
484
+ wx.Panel.__init__(self, parent, -1)
485
+
486
+ tsizer = wx.BoxSizer(wx.VERTICAL)
487
+
488
+ fn = parent.GetFont()
489
+ fn.SetPointSize(fn.GetPointSize() + 3)
490
+ fn.SetWeight(wx.FONTWEIGHT_BOLD)
491
+
492
+ t = wx.StaticText(self, -1, "Buttons", style = wx.ALIGN_LEFT)
493
+ t.SetFont(fn)
494
+ tsizer.Add(t, 0, wx.ALL | wx.EXPAND | wx.ALIGN_LEFT, 1)
495
+
496
+ sizer = wx.FlexGridSizer(4, 16, 2, 2)
497
+
498
+ fn.SetPointSize(parent.GetFont().GetPointSize() + 1)
499
+
500
+ for i in range(0, MAX_BUTTONS):
501
+ t = LED(self, i)
502
+ self.leds[i] = t
503
+ sizer.Add(t, 1, wx.ALL|wx.ALIGN_CENTER|wx.ALIGN_CENTER_VERTICAL, 1)
504
+ sizer.AddGrowableCol(i)
505
+
506
+ tsizer.Add(sizer, 1, wx.ALL | wx.EXPAND | wx.ALIGN_LEFT, 1)
507
+
508
+ self.SetSizer(tsizer)
509
+ tsizer.Fit(self)
510
+
511
+ def Calibrate(self):
512
+ for i in range(0, MAX_BUTTONS):
513
+ self.leds[i].state = -1
514
+
515
+ t = self.stick.GetNumberButtons()
516
+
517
+ for i in range(0, t):
518
+ self.leds[i].state = 0
519
+
520
+ def Update(self):
521
+ t = self.stick.GetButtonState()
522
+
523
+ for i in range(0, MAX_BUTTONS):
524
+ if self.leds[i].state == 1:
525
+ self.leds[i].state = 0
526
+
527
+ if (t & (1<<i)):
528
+ self.leds[i].state = 1
529
+
530
+ self.leds[i].Update()
531
+
532
+
533
+ #----------------------------------------------------------------------------
534
+
535
+ class InfoPanel(wx.Panel):
536
+ def __init__(self, parent, stick):
537
+
538
+ self.stick = stick
539
+
540
+ wx.Panel.__init__(self, parent, -1)
541
+
542
+ sizer = wx.GridBagSizer(1, 1)
543
+
544
+ sizer.Add(Label(self, 'Mfr ID: '), (0, 0), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_RIGHT, 2)
545
+ self.MfgID = wx.TextCtrl(self, -1, value='', size=(45, -1), style=wx.TE_READONLY)
546
+ sizer.Add(self.MfgID, (0, 1), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_LEFT, 2)
547
+
548
+ sizer.Add(Label(self, 'Prod Name: '), (0, 2), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_RIGHT, 2)
549
+ self.ProdName = wx.TextCtrl(self, -1, value='', style=wx.TE_READONLY)
550
+ sizer.Add(self.ProdName, (0, 3), (1, 3), wx.ALL | wx.GROW | wx.ALIGN_LEFT, 2)
551
+
552
+ sizer.Add(Label(self, 'Threshold: '), (0, 6), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_RIGHT, 2)
553
+ self.Threshold = wx.TextCtrl(self, -1, value='', size=(45, -1), style=wx.TE_READONLY)
554
+ sizer.Add(self.Threshold, (0, 7), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_LEFT, 2)
555
+
556
+ #----------------------------------------------------------------------------
557
+ b = wx.Button(self, -1, "Calibrate")
558
+ sizer.Add(b, (1, 0), (2, 2), wx.ALL | wx.ALIGN_CENTER, 2)
559
+
560
+ sizer.Add(Label(self, '# of Sticks: '), (1, 2), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_RIGHT, 2)
561
+ self.NumJoysticks = wx.TextCtrl(self, -1, value='', size=(45, -1), style=wx.TE_READONLY)
562
+ sizer.Add(self.NumJoysticks, (1, 3), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_LEFT, 2)
563
+
564
+ sizer.Add(Label(self, '# of Axes: '), (1, 4), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_RIGHT, 2)
565
+ self.NumAxis = wx.TextCtrl(self, -1, value='', size=(45, -1), style=wx.TE_READONLY)
566
+ sizer.Add(self.NumAxis, (1, 5), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_LEFT, 2)
567
+
568
+ sizer.Add(Label(self, 'Max # Axes: '), (1, 6), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_RIGHT, 2)
569
+ self.MaxAxis = wx.TextCtrl(self, -1, value='', size=(45, -1), style=wx.TE_READONLY)
570
+ sizer.Add(self.MaxAxis, (1, 7), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_LEFT, 2)
571
+
572
+ #----------------------------------------------------------------------------
573
+
574
+ sizer.Add(Label(self, 'Polling -- '), (2, 3), (1, 1), wx.ALL | wx.GROW, 2)
575
+
576
+ sizer.Add(Label(self, 'Min: '), (2, 4), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_RIGHT, 2)
577
+ self.PollMin = wx.TextCtrl(self, -1, value='', size=(45, -1), style=wx.TE_READONLY)
578
+ sizer.Add(self.PollMin, (2, 5), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_LEFT, 2)
579
+
580
+ sizer.Add(Label(self, 'Max: '), (2, 6), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_RIGHT, 2)
581
+ self.PollMax = wx.TextCtrl(self, -1, value='', size=(45, -1), style=wx.TE_READONLY)
582
+ sizer.Add(self.PollMax, (2, 7), (1, 1), wx.ALL | wx.GROW | wx.ALIGN_LEFT, 2)
583
+
584
+ #----------------------------------------------------------------------------
585
+
586
+ self.SetSizer(sizer)
587
+ sizer.Fit(self)
588
+
589
+
590
+ def Calibrate(self):
591
+ if not self.stick:
592
+ return
593
+
594
+ s = self.stick
595
+
596
+ self.MfgID.SetValue(str(s.GetManufacturerId()))
597
+ self.ProdName.SetValue(str(s.GetProductName()))
598
+ self.Threshold.SetValue(str(s.GetMovementThreshold()))
599
+ self.NumJoysticks.SetValue(str(s.GetNumberJoysticks()))
600
+ self.NumAxis.SetValue(str(s.GetNumberAxes()))
601
+ self.MaxAxis.SetValue(str(s.GetMaxAxes()))
602
+ self.PollMin.SetValue(str(s.GetPollingMin()))
603
+ self.PollMax.SetValue(str(s.GetPollingMax()))
604
+
605
+
606
+ #----------------------------------------------------------------------------
607
+
608
+ class AxisBar(wx.Gauge):
609
+ #
610
+ # This class allows us to use a wx.Gauge to display the axis value
611
+ # with a fancy label overlaid onto the gauge itself. Two values are
612
+ # used to do things: first of all, since the gauge is limited to
613
+ # positive numbers, the scale is fixed at 0 to 1000. We will receive
614
+ # an adjusted value to use to render the gauge itself. The other value
615
+ # is a raw value and actually reflects the value from the joystick itself,
616
+ # which is then drawn over the gauge.
617
+ #
618
+ def __init__(self, parent):
619
+ wx.Gauge.__init__(self, parent, -1, 1000, size=(-1, 20), style = wx.GA_HORIZONTAL | wx.GA_SMOOTH )
620
+
621
+ # This is the value we will display.
622
+ self.rawvalue = 0
623
+
624
+ self.SetBackgroundColour('light blue')
625
+ self.SetForegroundColour('orange')
626
+
627
+ # NOTE: See comment below
628
+ # # Capture paint events for purpose of updating
629
+ # # the displayed value.
630
+ # self.Bind(wx.EVT_PAINT, self.onPaint)
631
+
632
+ def Update(self, value, rawvalue):
633
+ # Updates the gauge itself, sets the raw value for
634
+ # the next EVT_PAINT
635
+ self.SetValue(value)
636
+ self.rawvalue = rawvalue
637
+
638
+ def onPaint(self, evt):
639
+ # Must always create a PaintDC when capturing
640
+ # an EVT_PAINT event
641
+ self.ShowValue(wx.PaintDC(self), evt)
642
+
643
+ def ShowValue(self, dc, evt):
644
+ # This method handles actual painting of and drawing
645
+ # on the gauge.
646
+
647
+ # Clear out the gauge
648
+ dc.Clear()
649
+
650
+ # NOTE: in Classic we exposed wxWindow::OnPaint for MSW, so the default
651
+ # paint behavior can be triggered and then we can draw on top of
652
+ # that after the native OnPaint is done. For Phoenix, I chose to
653
+ # not do this any more, so this breaks. Not sure this is really
654
+ # needed for this demo, but if so then we'll nede to find another
655
+ # way to do this. In the meantime, this is commented out, and the
656
+ # Paint event will also not be captured at all.
657
+
658
+ # # and then carry out business as usual
659
+ # wx.Gauge.OnPaint(self, evt)
660
+
661
+ # This is the size available to us.
662
+ w, h = dc.GetSize()
663
+
664
+ # This is what we will overlay on the gauge.
665
+ # It reflects the actual value received from the
666
+ # wx.adv.Joystick.
667
+ txt = str(self.rawvalue)
668
+
669
+ # Copy the default font, make it bold.
670
+ fn = self.GetParent().GetFont()
671
+ fn.SetWeight(wx.FONTWEIGHT_BOLD)
672
+
673
+ # Set the font for the DC ...
674
+ dc.SetFont(fn)
675
+ # ... and calculate how much space our value
676
+ # will take up.
677
+ fw, fh = dc.GetTextExtent(txt)
678
+
679
+ # Calc the center of the gauge, and from that
680
+ # derive the origin of our value.
681
+ center = w / 2
682
+ tx = center - (fw/2)
683
+
684
+ center = h / 2
685
+ ty = center - (fh/2)
686
+
687
+ # I draw the value twice so as to give it a pseudo-shadow.
688
+ # This is (mostly) because I'm too lazy to figure out how
689
+ # to blit my text onto the gauge using one of the logical
690
+ # functions. The pseudo-shadow gives the text contrast
691
+ # regardless of whether the bar is under it or not.
692
+ dc.SetTextForeground(wx.BLACK)
693
+ dc.DrawText(txt, tx, ty)
694
+
695
+ dc.SetTextForeground('white')
696
+ dc.DrawText(txt, tx-1, ty-1)
697
+
698
+
699
+ #----------------------------------------------------------------------------
700
+
701
+ class Axis(wx.Panel):
702
+ #
703
+ # This class is a container for the min, max, and current
704
+ # values of the joystick axis in question. It contains
705
+ # also special features to render a 'dummy' if the axis
706
+ # in question is not available.
707
+ #
708
+ def __init__(self, parent, token, stick):
709
+
710
+ self.stick = stick
711
+
712
+ #
713
+ # token represents the type of axis we're displaying.
714
+ #
715
+ self.token = token
716
+
717
+ #
718
+ # Create a call to the 'Has*()' method for the stick.
719
+ # X and Y are always there, so we tie the Has* method
720
+ # to a hardwired True value.
721
+ #
722
+ if token not in ['X', 'Y']:
723
+ self.HasFunc = eval('stick.Has%s' % token)
724
+ else:
725
+ self.HasFunc = self.alwaysTrue
726
+
727
+ # Now init the panel.
728
+ wx.Panel.__init__(self, parent, -1)
729
+
730
+ sizer = wx.BoxSizer(wx.HORIZONTAL)
731
+
732
+ if self.HasFunc():
733
+ #
734
+ # Tie our calibration functions to the appropriate
735
+ # stick method. If we don't have the axis in question,
736
+ # we won't need them.
737
+ #
738
+ self.GetMin = eval('stick.Get%sMin' % token)
739
+ self.GetMax = eval('stick.Get%sMax' % token)
740
+
741
+ # Create our displays and set them up.
742
+ self.Min = wx.StaticText(self, -1, str(self.GetMin()), style=wx.ALIGN_RIGHT)
743
+ self.Max = wx.StaticText(self, -1, str(self.GetMax()), style=wx.ALIGN_LEFT)
744
+ self.bar = AxisBar(self)
745
+
746
+ sizer.Add(self.Min, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 1)
747
+ sizer.Add(self.bar, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 1)
748
+ sizer.Add(self.Max, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 1)
749
+
750
+ else:
751
+ # We go here if the axis in question is not available.
752
+ self.control = wx.StaticText(self, -1, ' *** Not Present ***')
753
+ sizer.Add(self.control, 1, wx.ALL, 1)
754
+
755
+ #----------------------------------------------------------------------------
756
+
757
+ self.SetSizer(sizer)
758
+ sizer.Fit(self)
759
+ wx.CallAfter(self.Update)
760
+
761
+
762
+ def Calibrate(self):
763
+ if not self.HasFunc():
764
+ return
765
+
766
+ self.Min.SetLabel(str(self.GetMin()))
767
+ self.Max.SetLabel(str(self.GetMax()))
768
+
769
+
770
+ def Update(self):
771
+ # Don't bother if the axis doesn't exist.
772
+ if not self.HasFunc():
773
+ return
774
+
775
+ min = int(self.Min.GetLabel())
776
+ max = int(self.Max.GetLabel())
777
+
778
+ #
779
+ # Not all values are available from a wx.JoystickEvent, so I've elected
780
+ # to not use it at all. Therefore, we are getting our values direct from
781
+ # the stick. These values also seem to be more stable and reliable than
782
+ # those received from the event itself, so maybe it's a good idea to
783
+ # use the stick directly for your program.
784
+ #
785
+ # Here we either select the appropriate member of stick.GetPosition() or
786
+ # apply the appropriate Get*Position method call.
787
+ #
788
+ if self.token == 'X':
789
+ val = self.stick.GetPosition().x
790
+ elif self.token == 'Y':
791
+ val = self.stick.GetPosition().y
792
+ else:
793
+ val = eval('self.stick.Get%sPosition()' % self.token)
794
+
795
+
796
+ #
797
+ # While we might be able to rely on a range of 0-FFFFFF on Win, that might
798
+ # not be true of all drivers on all platforms. Thus, calc the actual full
799
+ # range first.
800
+ #
801
+ if min < 0:
802
+ max += abs(min)
803
+ val += abs(min)
804
+ min = 0
805
+ range = float(max - min)
806
+
807
+ #
808
+ # The relative value is used by the derived wx.Gauge since it is a
809
+ # positive-only control.
810
+ #
811
+ relative = 0
812
+ if range:
813
+ relative = int( val / range * 1000)
814
+
815
+ #
816
+ # Pass both the raw and relative values to the derived Gauge
817
+ #
818
+ self.bar.Update(relative, val)
819
+
820
+
821
+ def alwaysTrue(self):
822
+ # a dummy method used for X and Y axis.
823
+ return True
824
+
825
+
826
+ #----------------------------------------------------------------------------
827
+
828
+ class AxisPanel(wx.Panel):
829
+ #
830
+ # Contained herein is a panel that offers a graphical display
831
+ # of the levels for all axes supported by wx.adv.Joystick. If
832
+ # your system doesn't have a particular axis, it will be
833
+ # 'dummied' for transparent use.
834
+ #
835
+ def __init__(self, parent, stick):
836
+
837
+ self.stick = stick
838
+
839
+ # Defines labels and 'tokens' to identify each
840
+ # supported axis.
841
+ axesList = [
842
+ ('X Axis ', 'X'), ('Y Axis ', 'Y'),
843
+ ('Z Axis ', 'Z'), ('Rudder ', 'Rudder'),
844
+ ('U Axis ', 'U'), ('V Axis ', 'V')
845
+ ]
846
+
847
+ # Contains a list of all axis initialized.
848
+ self.axes = []
849
+
850
+ wx.Panel.__init__(self, parent, -1)
851
+
852
+ sizer = wx.FlexGridSizer(3, 4, 1, 1)
853
+ sizer.AddGrowableCol(1)
854
+ sizer.AddGrowableCol(3)
855
+
856
+ #----------------------------------------------------------------------------
857
+
858
+ # Go through the list of labels and tokens and add a label and
859
+ # axis display to the sizer for each.
860
+ for label, token in axesList:
861
+ sizer.Add(Label(self, label), 0, wx.ALL | wx.ALIGN_RIGHT, 2)
862
+ t = Axis(self, token, self.stick)
863
+ self.axes.append(t)
864
+ sizer.Add(t, 1, wx.ALL | wx.EXPAND | wx.ALIGN_LEFT, 2)
865
+
866
+ #----------------------------------------------------------------------------
867
+
868
+ self.SetSizer(sizer)
869
+ sizer.Fit(self)
870
+ wx.CallAfter(self.Update)
871
+
872
+ def Calibrate(self):
873
+ for i in self.axes:
874
+ i.Calibrate()
875
+
876
+ def Update(self):
877
+ for i in self.axes:
878
+ i.Update()
879
+
880
+
881
+ #----------------------------------------------------------------------------
882
+
883
+ class JoystickDemoPanel(wx.Panel):
884
+
885
+ def __init__(self, parent, log):
886
+
887
+ self.log = log
888
+
889
+ wx.Panel.__init__(self, parent, -1)
890
+
891
+ # Try to grab the control. If we get it, capture the stick.
892
+ # Otherwise, throw up an exception message and play stupid.
893
+ try:
894
+ self.stick = wx.adv.Joystick()
895
+ self.stick.SetCapture(self)
896
+ # Calibrate our controls
897
+ wx.CallAfter(self.Calibrate)
898
+ wx.CallAfter(self.OnJoystick)
899
+ except NotImplementedError as v:
900
+ wx.MessageBox(str(v), "Exception Message")
901
+ self.stick = None
902
+
903
+ # One Sizer to Rule Them All...
904
+ sizer = wx.GridBagSizer(2,2)
905
+
906
+ self.info = InfoPanel(self, self.stick)
907
+ sizer.Add(self.info, (0, 0), (1, 3), wx.ALL | wx.GROW, 2)
908
+
909
+ self.info.Bind(wx.EVT_BUTTON, self.Calibrate)
910
+
911
+ self.joy = JoyPanel(self, self.stick)
912
+ sizer.Add(self.joy, (1, 0), (1, 1), wx.ALL | wx.GROW, 2)
913
+
914
+ self.pov = POVPanel(self, self.stick)
915
+ sizer.Add(self.pov, (1, 1), (1, 2), wx.ALL | wx.GROW, 2)
916
+
917
+ self.axes = AxisPanel(self, self.stick)
918
+ sizer.Add(self.axes, (2, 0), (1, 3), wx.ALL | wx.GROW, 2)
919
+
920
+ self.buttons = JoyButtons(self, self.stick)
921
+ sizer.Add(self.buttons, (3, 0), (1, 3), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER | wx.ALIGN_CENTER_VERTICAL, 1)
922
+
923
+ self.SetSizer(sizer)
924
+ sizer.Fit(self)
925
+
926
+ # Capture Joystick events (if they happen)
927
+ self.Bind(wx.EVT_JOYSTICK_EVENTS, self.OnJoystick)
928
+ self.stick.SetMovementThreshold(10)
929
+
930
+
931
+ def Calibrate(self, evt=None):
932
+ # Do not try this without a stick
933
+ if not self.stick:
934
+ return
935
+
936
+ self.info.Calibrate()
937
+ self.axes.Calibrate()
938
+ self.pov.Calibrate()
939
+ self.buttons.Calibrate()
940
+
941
+
942
+ def OnJoystick(self, evt=None):
943
+ if not self.stick:
944
+ return
945
+
946
+ self.axes.Update()
947
+ self.joy.Update()
948
+ self.pov.Update()
949
+ if evt is not None and evt.IsButton():
950
+ self.buttons.Update()
951
+
952
+
953
+ def ShutdownDemo(self):
954
+ if self.stick:
955
+ self.stick.ReleaseCapture()
956
+ self.stick.Destroy()
957
+ self.stick = None
958
+
959
+ #----------------------------------------------------------------------------
960
+
961
+ def runTest(frame, nb, log):
962
+ if not wx.adv.USE_JOYSTICK:
963
+ from wx.lib.msgpanel import MessagePanel
964
+ win = MessagePanel(nb, 'wx.Joystick is not available on this platform.',
965
+ 'Sorry', wx.ICON_WARNING)
966
+ return win
967
+
968
+ elif wx.adv.Joystick.GetNumberJoysticks() != 0:
969
+ win = JoystickDemoPanel(nb, log)
970
+ return win
971
+
972
+ else:
973
+ from wx.lib.msgpanel import MessagePanel
974
+ win = MessagePanel(nb, 'No joysticks are found on this system.',
975
+ 'Sorry', wx.ICON_WARNING)
976
+ return win
977
+
978
+
979
+ #----------------------------------------------------------------------------
980
+
981
+ overview = """\
982
+ <html>
983
+ <body>
984
+ <h1>wx.adv.Joystick</h1>
985
+ This demo illustrates the use of the wx.adv.Joystick class, which is an interface to
986
+ one or more joysticks attached to your system.
987
+
988
+ <p>The data that can be retrieved from the joystick comes in four basic flavors.
989
+ All of these are illustrated in the demo. In fact, this demo illustrates everything
990
+ you <b>can</b> get from the wx.adv.Joystick control.
991
+
992
+ <ul>
993
+ <li>Static information such as Manufacturer ID and model name,
994
+ <li>Analog input from up to six axes, including X and Y for the actual stick,
995
+ <li>Button input from the fire button and any other buttons that the stick has,
996
+ <li>and the POV control (a kind of mini-joystick on top of the joystick) that many sticks come with.
997
+ </ul>
998
+
999
+ <p>Getting data from the joystick can be event-driven thanks to four event types associated
1000
+ with wx.JoystickEvent, or the joystick can be polled programmatically to get data on
1001
+ a regular basis.
1002
+
1003
+ <h2>Data types</h2>
1004
+
1005
+ Data from the joystick comes in two flavors: that which defines the boundaries, and that
1006
+ which defines the current state of the stick. Thus, we have Get*Max() and Get*Min()
1007
+ methods for all axes, the max number of axes, the max number of buttons, and so on. In
1008
+ general, this data can be read once and stored to speed computation up.
1009
+
1010
+ <h3>Analog Input</h3>
1011
+
1012
+ Analog input (the axes) is delivered as a whole, positive number. If you need to know
1013
+ if the axis is at zero (centered) or not, you will first have to calculate that center
1014
+ based on the max and min values. The demo shows a bar graph for each axis expressed
1015
+ in native numerical format, plus a 'centered' X-Y axis compass showing the relationship
1016
+ of that input to the calculated stick position.
1017
+
1018
+ Analog input may be jumpy and spurious, so the control has a means of 'smoothing' the
1019
+ analog data by setting a movement threshold. This demo sets the threshold to 10, but
1020
+ you can set it at any valid value between the min and max.
1021
+
1022
+ <h3>Button Input</h3>
1023
+
1024
+ Button state is retrieved as one int that contains each button state mapped to a bit.
1025
+ You get the state of a button by AND-ing its bit against the returned value, in the form
1026
+
1027
+ <pre>
1028
+ # assume buttonState is what the stick returned, and buttonBit
1029
+ # is the bit you want to examine
1030
+
1031
+ if (buttonState & ( 1 &lt;&lt; buttonBit )) :
1032
+ # button pressed, do something with it
1033
+ </pre>
1034
+
1035
+ <p>The problem here is that some OSs return a 32-bit value for up to 32 buttons
1036
+ (imagine <i>that</i> stick!). Python V2.3 will generate an exception for bit
1037
+ values over 30. For that reason, this demo is limited to 16 buttons.
1038
+
1039
+ <p>Note that more than one button can be pressed at a time, so be sure to check all of them!
1040
+
1041
+
1042
+ <h3>POV Input</h3>
1043
+
1044
+ POV hats come in two flavors: four-way, and continuous. four-way POVs are restricted to
1045
+ the cardinal points of the compass; continuous, or CTS POV hats can deliver input in
1046
+ .01 degree increments, theoreticaly. The data is returned as a whole number; the last
1047
+ two digits are considered to be to the right of the decimal point, so in order to
1048
+ use this information, you need to divide by 100 right off the bat.
1049
+
1050
+ <p>Different methods are provided to retrieve the POV data for a CTS hat
1051
+ versus a four-way hat.
1052
+
1053
+ <h2>Caveats</h2>
1054
+
1055
+ The wx.adv.Joystick control is in many ways incomplete at the C++ library level, but it is
1056
+ not insurmountable. In short, while the joystick interface <i>can</i> be event-driven,
1057
+ the wx.JoystickEvent class lacks event binders for all event types. Thus, you cannot
1058
+ rely on wx.JoystickEvents to tell you when something has changed, necessarily.
1059
+
1060
+ <ul>
1061
+ <li>There are no events associated with the POV control.
1062
+ <li>There are no events associated with the Rudder
1063
+ <li>There are no events associated with the U and V axes.
1064
+ </ul>
1065
+
1066
+ <p>Fortunately, there is an easy workaround. In the top level frame, create a wx.Timer
1067
+ that will poll the stick at a set interval. Of course, if you do this, you might as
1068
+ well forgo catching wxEVT_JOYSTICK_* events at all and rely on the timer to do the
1069
+ polling.
1070
+
1071
+ <p>Ideally, the timer should be a one-shot; after it fires, collect and process data as
1072
+ needed, then re-start the timer, possibly using wx.CallAfter().
1073
+
1074
+ </body>
1075
+ </html>
1076
+ """
1077
+
1078
+ #----------------------------------------------------------------------------
1079
+
1080
+ if __name__ == '__main__':
1081
+ import sys,os
1082
+ import run
1083
+ run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])