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/lib/splitter.py ADDED
@@ -0,0 +1,925 @@
1
+ #----------------------------------------------------------------------
2
+ # Name: wx.lib.splitter
3
+ # Purpose: A class similar to wx.SplitterWindow but that allows more
4
+ # than a single split
5
+ #
6
+ # Author: Robin Dunn
7
+ #
8
+ # Created: 9-June-2005
9
+ # Copyright: (c) 2005-2020 by Total Control Software
10
+ # Licence: wxWindows license
11
+ # Tags: phoenix-port, unittest, documentation, py3-port
12
+ #----------------------------------------------------------------------
13
+ """
14
+ This module provides the :class:`~lib.splitter.MultiSplitterWindow` class, which is very
15
+ similar to the standard :class:`SplitterWindow` except it can be split
16
+ more than once.
17
+ """
18
+
19
+ import wx
20
+
21
+ _RENDER_VER = (2,6,1,1)
22
+
23
+ #----------------------------------------------------------------------
24
+
25
+ class MultiSplitterWindow(wx.Panel):
26
+ """
27
+ This class is very similar to `wx.SplitterWindow` except that it
28
+ allows for more than two windows and more than one sash. Many of
29
+ the same styles, constants, and methods behave the same as in
30
+ wx.SplitterWindow. The key differences are seen in the methods
31
+ that deal with the child windows managed by the splitter, and also
32
+ those that deal with the sash positions. In most cases you will
33
+ need to pass an index value to tell the class which window or sash
34
+ you are refering to.
35
+
36
+ The concept of the sash position is also different than in
37
+ wx.SplitterWindow. Since the wx.Splitterwindow has only one sash
38
+ you can think of it's position as either relative to the whole
39
+ splitter window, or as relative to the first window pane managed
40
+ by the splitter. Once there is more than one sash then the
41
+ distinciton between the two concepts needs to be clairified. I've
42
+ chosen to use the second definition, and sash positions are the
43
+ distance (either horizontally or vertically) from the origin of
44
+ the window just before the sash in the splitter stack.
45
+
46
+ NOTE: These things are not yet supported:
47
+
48
+ * Using negative sash positions to indicate a position offset
49
+ from the end.
50
+
51
+ * User controlled unsplitting (with double clicks on the sash
52
+ or dragging a sash until the pane size is zero.)
53
+
54
+ * Sash gravity
55
+
56
+ """
57
+ def __init__(self, parent, id=-1,
58
+ pos = wx.DefaultPosition, size = wx.DefaultSize,
59
+ style = 0, name="multiSplitter"):
60
+ """
61
+ Default class constructor.
62
+
63
+ :param wx.Window `parent`: the parent window
64
+ :param integer `id`: an identifier for the control: a value of -1 is taken to mean a default
65
+ :param wx.Point `pos`: the control position. A value of (-1, -1) indicates a default position,
66
+ chosen by either the windowing system or wxPython, depending on platform
67
+ :param wx.Size `size`: the control size. A value of (-1, -1) indicates a default size,
68
+ chosen by either the windowing system or wxPython, depending on platform
69
+ :param integer `style`: the control window style
70
+ :param string `name`: the control name
71
+ """
72
+ # always turn on tab traversal
73
+ style |= wx.TAB_TRAVERSAL
74
+
75
+ # and turn off any border styles
76
+ style &= ~wx.BORDER_MASK
77
+ style |= wx.BORDER_NONE
78
+
79
+ # initialize the base class
80
+ wx.Panel.__init__(self, parent, id, pos, size, style, name)
81
+ self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
82
+
83
+ # initialize data members
84
+ self._windows = []
85
+ self._sashes = []
86
+ self._pending = {}
87
+ self._permitUnsplitAlways = self.HasFlag(wx.SP_PERMIT_UNSPLIT)
88
+ self._orient = wx.HORIZONTAL
89
+ self._dragMode = wx.SPLIT_DRAG_NONE
90
+ self._activeSash = -1
91
+ self._oldX = 0
92
+ self._oldY = 0
93
+ self._checkRequestedSashPosition = False
94
+ self._minimumPaneSize = 0
95
+ self._sashCursorWE = wx.Cursor(wx.CURSOR_SIZEWE)
96
+ self._sashCursorNS = wx.Cursor(wx.CURSOR_SIZENS)
97
+ self._sashTrackerPen = wx.Pen(wx.BLACK, 2, wx.PENSTYLE_SOLID)
98
+ self._needUpdating = False
99
+ self._isHot = False
100
+ self._drawSashInBackgroundColour = False
101
+
102
+ # Bind event handlers
103
+ self.Bind(wx.EVT_PAINT, self._OnPaint)
104
+ self.Bind(wx.EVT_IDLE, self._OnIdle)
105
+ self.Bind(wx.EVT_SIZE, self._OnSize)
106
+ self.Bind(wx.EVT_MOUSE_EVENTS, self._OnMouse)
107
+
108
+
109
+
110
+ def SetOrientation(self, orient):
111
+ """
112
+ Set whether the windows managed by the splitter will be
113
+ stacked vertically or horizontally. The default is
114
+ horizontal.
115
+
116
+ :param `orient`: either ``wx.VERTICAL`` or ``wx.HORIZONTAL``
117
+ """
118
+ assert orient in [ wx.VERTICAL, wx.HORIZONTAL ]
119
+ self._orient = orient
120
+
121
+ def GetOrientation(self):
122
+ """
123
+ Returns the current orientation of the splitter, either
124
+ ``wx.VERTICAL`` or ``wx.HORIZONTAL``.
125
+ """
126
+ return self._orient
127
+
128
+ def SetBackgroundColour(self,color):
129
+ """
130
+ Sets the back ground colour.
131
+
132
+ :param wx.Colour `color`: the colour to use.
133
+
134
+ """
135
+ wx.Panel.SetBackgroundColour(self,color)
136
+ self._drawSashInBackgroundColour = True
137
+ if wx.NullColour == color:
138
+ self._drawSashInBackgroundColour = False
139
+
140
+
141
+ def SetMinimumPaneSize(self, minSize):
142
+ """
143
+ Set the smallest size that any pane will be allowed to be
144
+ resized to.
145
+
146
+ :param int `minSize`: the minimum size of pane
147
+
148
+ """
149
+ self._minimumPaneSize = minSize
150
+
151
+ def GetMinimumPaneSize(self):
152
+ """
153
+ Returns the smallest allowed size for a window pane.
154
+ """
155
+ return self._minimumPaneSize
156
+
157
+
158
+
159
+ def AppendWindow(self, window, sashPos=-1):
160
+ """
161
+ Add a new window to the splitter at the right side or bottom
162
+ of the window stack.
163
+
164
+ :param `window`: the window to add to the splitter
165
+ :param `sashPos`: if given it is used to size the new window
166
+
167
+ """
168
+ self.InsertWindow(len(self._windows), window, sashPos)
169
+
170
+
171
+ def InsertWindow(self, idx, window, sashPos=-1):
172
+ """
173
+ Insert a new window into the splitter.
174
+
175
+ :param int `idx`: the position to insert the window at.
176
+ :param `window`: the window to add to the splitter
177
+ :param `sashPos`: if given it is used to size the new window
178
+
179
+ """
180
+ assert window not in self._windows, "A window can only be in the splitter once!"
181
+ self._windows.insert(idx, window)
182
+ self._sashes.insert(idx, -1)
183
+ if not window.IsShown():
184
+ window.Show()
185
+ if sashPos != -1:
186
+ self._pending[window] = sashPos
187
+ self._checkRequestedSashPosition = False
188
+ self._SizeWindows()
189
+
190
+
191
+ def DetachWindow(self, window):
192
+ """
193
+ Removes the window from the stack of windows managed by the
194
+ splitter. The window will still exist so you should `Hide` or
195
+ `Destroy` it as needed.
196
+
197
+ :param `window`: the window to be removed from the splitter
198
+
199
+ """
200
+ assert window in self._windows, "Unknown window!"
201
+ idx = self._windows.index(window)
202
+ del self._windows[idx]
203
+ del self._sashes[idx]
204
+ self._SizeWindows()
205
+
206
+
207
+ def ReplaceWindow(self, oldWindow, newWindow):
208
+ """
209
+ Replaces oldWindow (which is currently being managed by the
210
+ splitter) with newWindow. The oldWindow window will still
211
+ exist so you should `Hide` or `Destroy` it as needed.
212
+
213
+ :param `oldWindow`: the window to be replace
214
+ :param `newWindow`: the window to replace the above window
215
+
216
+ """
217
+ assert oldWindow in self._windows, "Unknown window!"
218
+ idx = self._windows.index(oldWindow)
219
+ self._windows[idx] = newWindow
220
+ if not newWindow.IsShown():
221
+ newWindow.Show()
222
+ self._SizeWindows()
223
+
224
+
225
+ def ExchangeWindows(self, window1, window2):
226
+ """
227
+ Trade the positions in the splitter of the two windows.
228
+
229
+ :param `window1`: the first window to switch position
230
+ :param `window2`: the second window to switch position
231
+
232
+ """
233
+ assert window1 in self._windows, "Unknown window!"
234
+ assert window2 in self._windows, "Unknown window!"
235
+ idx1 = self._windows.index(window1)
236
+ idx2 = self._windows.index(window2)
237
+ self._windows[idx1] = window2
238
+ self._windows[idx2] = window1
239
+ self._SizeWindows()
240
+
241
+
242
+ def GetWindow(self, idx):
243
+ """
244
+ Returns the idx'th window being managed by the splitter.
245
+
246
+ :param int `idx`: get the window at the given index
247
+
248
+ """
249
+ assert idx < len(self._windows)
250
+ return self._windows[idx]
251
+
252
+
253
+ def GetSashPosition(self, idx):
254
+ """
255
+ Returns the position of the idx'th sash, measured from the
256
+ left/top of the window preceding the sash.
257
+
258
+ :param int `idx`: get the sash position of the given index
259
+
260
+ """
261
+ assert idx < len(self._sashes)
262
+ return self._sashes[idx]
263
+
264
+
265
+ def SetSashPosition(self, idx, pos):
266
+ """
267
+ Set the position of the idx'th sash, measured from the left/top
268
+ of the window preceding the sash.
269
+
270
+ :param int `idx`: set the sash position of the given index
271
+ :param int `pos`: the sash position
272
+
273
+ """
274
+ assert idx < len(self._sashes)
275
+ self._sashes[idx] = pos
276
+ self._SizeWindows()
277
+
278
+
279
+ def SizeWindows(self):
280
+ """
281
+ Reposition and size the windows managed by the splitter.
282
+ Useful when windows have been added/removed or when styles
283
+ have been changed.
284
+ """
285
+ self._SizeWindows()
286
+
287
+
288
+ def DoGetBestSize(self):
289
+ """
290
+ Overridden base class virtual. Determines the best size of
291
+ the control based on the best sizes of the child windows.
292
+ """
293
+ best = wx.Size(0,0)
294
+ if not self._windows:
295
+ best = wx.Size(10,10)
296
+
297
+ sashsize = self._GetSashSize()
298
+ if self._orient == wx.HORIZONTAL:
299
+ for win in self._windows:
300
+ winbest = win.GetEffectiveMinSize()
301
+ best.width += max(self._minimumPaneSize, winbest.width)
302
+ best.height = max(best.height, winbest.height)
303
+ best.width += sashsize * (len(self._windows)-1)
304
+
305
+ else:
306
+ for win in self._windows:
307
+ winbest = win.GetEffectiveMinSize()
308
+ best.height += max(self._minimumPaneSize, winbest.height)
309
+ best.width = max(best.width, winbest.width)
310
+ best.height += sashsize * (len(self._windows)-1)
311
+
312
+ border = 2 * self._GetBorderSize()
313
+ best.width += border
314
+ best.height += border
315
+ return best
316
+
317
+ # -------------------------------------
318
+ # Event handlers
319
+
320
+ def _OnPaint(self, evt):
321
+ dc = wx.PaintDC(self)
322
+ self._DrawSash(dc)
323
+
324
+
325
+ def _OnSize(self, evt):
326
+ parent = wx.GetTopLevelParent(self)
327
+ if parent.IsIconized():
328
+ evt.Skip()
329
+ return
330
+ self._SizeWindows()
331
+
332
+
333
+ def _OnIdle(self, evt):
334
+ evt.Skip()
335
+ # if this is the first idle time after a sash position has
336
+ # potentially been set, allow _SizeWindows to check for a
337
+ # requested size.
338
+ if not self._checkRequestedSashPosition:
339
+ self._checkRequestedSashPosition = True
340
+ self._SizeWindows()
341
+
342
+ if self._needUpdating:
343
+ self._SizeWindows()
344
+
345
+
346
+
347
+ def _OnMouse(self, evt):
348
+ if self.HasFlag(wx.SP_NOSASH):
349
+ return
350
+
351
+ x, y = evt.GetPosition()
352
+ isLive = self.HasFlag(wx.SP_LIVE_UPDATE)
353
+ adjustNeighbor = evt.ShiftDown()
354
+
355
+ # LeftDown: set things up for dragging the sash
356
+ if evt.LeftDown() and self._SashHitTest(x, y) != -1:
357
+ self._activeSash = self._SashHitTest(x, y)
358
+ self._dragMode = wx.SPLIT_DRAG_DRAGGING
359
+
360
+ self.CaptureMouse()
361
+ self._SetResizeCursor()
362
+
363
+ if not isLive:
364
+ self._pendingPos = (self._sashes[self._activeSash],
365
+ self._sashes[self._activeSash+1])
366
+ self._DrawSashTracker(x, y)
367
+
368
+ self._oldX = x
369
+ self._oldY = y
370
+ return
371
+
372
+ # LeftUp: Finsish the drag
373
+ elif evt.LeftUp() and self._dragMode == wx.SPLIT_DRAG_DRAGGING:
374
+ self._dragMode = wx.SPLIT_DRAG_NONE
375
+ self.ReleaseMouse()
376
+ self.SetCursor(wx.STANDARD_CURSOR)
377
+
378
+ if not isLive:
379
+ # erase the old tracker
380
+ self._DrawSashTracker(self._oldX, self._oldY)
381
+
382
+ diff = self._GetMotionDiff(x, y)
383
+
384
+ # determine if we can change the position
385
+ if isLive:
386
+ oldPos1, oldPos2 = (self._sashes[self._activeSash],
387
+ self._sashes[self._activeSash+1])
388
+ else:
389
+ oldPos1, oldPos2 = self._pendingPos
390
+ newPos1, newPos2 = self._OnSashPositionChanging(self._activeSash,
391
+ oldPos1 + diff,
392
+ oldPos2 - diff,
393
+ adjustNeighbor)
394
+ if newPos1 == -1:
395
+ # the change was not allowed
396
+ return
397
+
398
+ # TODO: check for unsplit?
399
+
400
+ self._SetSashPositionAndNotify(self._activeSash, newPos1, newPos2, adjustNeighbor)
401
+ self._activeSash = -1
402
+ self._pendingPos = (-1, -1)
403
+ self._SizeWindows()
404
+
405
+ # Entering or Leaving a sash: Change the cursor
406
+ elif (evt.Moving() or evt.Leaving() or evt.Entering()) and self._dragMode == wx.SPLIT_DRAG_NONE:
407
+ if evt.Leaving() or self._SashHitTest(x, y) == -1:
408
+ self._OnLeaveSash()
409
+ else:
410
+ self._OnEnterSash()
411
+
412
+ # Dragging the sash
413
+ elif evt.Dragging() and self._dragMode == wx.SPLIT_DRAG_DRAGGING:
414
+ diff = self._GetMotionDiff(x, y)
415
+ if not diff:
416
+ return # mouse didn't move far enough
417
+
418
+ # determine if we can change the position
419
+ if isLive:
420
+ oldPos1, oldPos2 = (self._sashes[self._activeSash],
421
+ self._sashes[self._activeSash+1])
422
+ else:
423
+ oldPos1, oldPos2 = self._pendingPos
424
+ newPos1, newPos2 = self._OnSashPositionChanging(self._activeSash,
425
+ oldPos1 + diff,
426
+ oldPos2 - diff,
427
+ adjustNeighbor)
428
+ if newPos1 == -1:
429
+ # the change was not allowed
430
+ return
431
+
432
+ if newPos1 == self._sashes[self._activeSash]:
433
+ return # nothing was changed
434
+
435
+ if not isLive:
436
+ # erase the old tracker
437
+ self._DrawSashTracker(self._oldX, self._oldY)
438
+
439
+ if self._orient == wx.HORIZONTAL:
440
+ x = self._SashToCoord(self._activeSash, newPos1)
441
+ else:
442
+ y = self._SashToCoord(self._activeSash, newPos1)
443
+
444
+ # Remember old positions
445
+ self._oldX = x
446
+ self._oldY = y
447
+
448
+ if not isLive:
449
+ # draw a new tracker
450
+ self._pendingPos = (newPos1, newPos2)
451
+ self._DrawSashTracker(self._oldX, self._oldY)
452
+ else:
453
+ self._DoSetSashPosition(self._activeSash, newPos1, newPos2, adjustNeighbor)
454
+ self._needUpdating = True
455
+
456
+
457
+ # -------------------------------------
458
+ # Internal helpers
459
+
460
+ def _RedrawIfHotSensitive(self, isHot):
461
+ if not wx.VERSION >= _RENDER_VER:
462
+ return
463
+ if wx.RendererNative.Get().GetSplitterParams(self).isHotSensitive:
464
+ self._isHot = isHot
465
+ dc = wx.ClientDC(self)
466
+ self._DrawSash(dc)
467
+
468
+
469
+ def _OnEnterSash(self):
470
+ self._SetResizeCursor()
471
+ self._RedrawIfHotSensitive(True)
472
+
473
+
474
+ def _OnLeaveSash(self):
475
+ self.SetCursor(wx.STANDARD_CURSOR)
476
+ self._RedrawIfHotSensitive(False)
477
+
478
+
479
+ def _SetResizeCursor(self):
480
+ if self._orient == wx.HORIZONTAL:
481
+ self.SetCursor(self._sashCursorWE)
482
+ else:
483
+ self.SetCursor(self._sashCursorNS)
484
+
485
+
486
+ def _OnSashPositionChanging(self, idx, newPos1, newPos2, adjustNeighbor):
487
+ # TODO: check for possibility of unsplit (pane size becomes zero)
488
+
489
+ # make sure that minsizes are honored
490
+ newPos1, newPos2 = self._AdjustSashPosition(idx, newPos1, newPos2, adjustNeighbor)
491
+
492
+ # sanity check
493
+ if newPos1 <= 0:
494
+ newPos2 += newPos1
495
+ newPos1 = 0
496
+
497
+ # send the events
498
+ evt = MultiSplitterEvent(
499
+ wx.wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, self)
500
+ evt.SetSashIdx(idx)
501
+ evt.SetSashPosition(newPos1)
502
+ if not self._DoSendEvent(evt):
503
+ # the event handler vetoed the change
504
+ newPos1 = -1
505
+ else:
506
+ # or it might have changed the value
507
+ newPos1 = evt.GetSashPosition()
508
+
509
+ if adjustNeighbor and newPos1 != -1:
510
+ evt.SetSashIdx(idx+1)
511
+ evt.SetSashPosition(newPos2)
512
+ if not self._DoSendEvent(evt):
513
+ # the event handler vetoed the change
514
+ newPos2 = -1
515
+ else:
516
+ # or it might have changed the value
517
+ newPos2 = evt.GetSashPosition()
518
+ if newPos2 == -1:
519
+ newPos1 = -1
520
+
521
+ return (newPos1, newPos2)
522
+
523
+
524
+ def _AdjustSashPosition(self, idx, newPos1, newPos2=-1, adjustNeighbor=False):
525
+ total = newPos1 + newPos2
526
+
527
+ # these are the windows on either side of the sash
528
+ win1 = self._windows[idx]
529
+ win2 = self._windows[idx+1]
530
+
531
+ # make adjustments for window min sizes
532
+ minSize = self._GetWindowMin(win1)
533
+ if minSize == -1 or self._minimumPaneSize > minSize:
534
+ minSize = self._minimumPaneSize
535
+ minSize += self._GetBorderSize()
536
+ if newPos1 < minSize:
537
+ newPos1 = minSize
538
+ newPos2 = total - newPos1
539
+
540
+ if adjustNeighbor:
541
+ minSize = self._GetWindowMin(win2)
542
+ if minSize == -1 or self._minimumPaneSize > minSize:
543
+ minSize = self._minimumPaneSize
544
+ minSize += self._GetBorderSize()
545
+ if newPos2 < minSize:
546
+ newPos2 = minSize
547
+ newPos1 = total - newPos2
548
+
549
+ return (newPos1, newPos2)
550
+
551
+
552
+ def _DoSetSashPosition(self, idx, newPos1, newPos2=-1, adjustNeighbor=False):
553
+ newPos1, newPos2 = self._AdjustSashPosition(idx, newPos1, newPos2, adjustNeighbor)
554
+ if newPos1 == self._sashes[idx]:
555
+ return False
556
+ self._sashes[idx] = newPos1
557
+ if adjustNeighbor:
558
+ self._sashes[idx+1] = newPos2
559
+ return True
560
+
561
+
562
+ def _SetSashPositionAndNotify(self, idx, newPos1, newPos2=-1, adjustNeighbor=False):
563
+ # TODO: what is the thing about _requestedSashPosition for?
564
+
565
+ self._DoSetSashPosition(idx, newPos1, newPos2, adjustNeighbor)
566
+
567
+ evt = MultiSplitterEvent(
568
+ wx.wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, self)
569
+ evt.SetSashIdx(idx)
570
+ evt.SetSashPosition(newPos1)
571
+ self._DoSendEvent(evt)
572
+
573
+ if adjustNeighbor:
574
+ evt.SetSashIdx(idx+1)
575
+ evt.SetSashPosition(newPos2)
576
+ self._DoSendEvent(evt)
577
+
578
+
579
+ def _GetMotionDiff(self, x, y):
580
+ # find the diff from the old pos
581
+ if self._orient == wx.HORIZONTAL:
582
+ diff = x - self._oldX
583
+ else:
584
+ diff = y - self._oldY
585
+ return diff
586
+
587
+
588
+ def _SashToCoord(self, idx, sashPos):
589
+ coord = 0
590
+ for i in range(idx):
591
+ coord += self._sashes[i]
592
+ coord += self._GetSashSize()
593
+ coord += sashPos
594
+ return coord
595
+
596
+
597
+ def _GetWindowMin(self, window):
598
+ # NOTE: Should this use GetEffectiveMinSize?
599
+ if self._orient == wx.HORIZONTAL:
600
+ return window.GetMinWidth()
601
+ else:
602
+ return window.GetMinHeight()
603
+
604
+
605
+ def _GetSashSize(self):
606
+ if self.HasFlag(wx.SP_NOSASH):
607
+ return 0
608
+ if wx.VERSION >= _RENDER_VER:
609
+ return wx.RendererNative.Get().GetSplitterParams(self).widthSash
610
+ else:
611
+ return 5
612
+
613
+
614
+ def _GetBorderSize(self):
615
+ if wx.VERSION >= _RENDER_VER:
616
+ return wx.RendererNative.Get().GetSplitterParams(self).border
617
+ else:
618
+ return 0
619
+
620
+
621
+ def _DrawSash(self, dc):
622
+ if wx.VERSION >= _RENDER_VER:
623
+ if self.HasFlag(wx.SP_3DBORDER):
624
+ wx.RendererNative.Get().DrawSplitterBorder(
625
+ self, dc, self.GetClientRect())
626
+
627
+ # if there are no splits then we're done.
628
+ if len(self._windows) < 2:
629
+ return
630
+
631
+ # if we are not supposed to use a sash then we're done.
632
+ if self.HasFlag(wx.SP_NOSASH):
633
+ return
634
+
635
+ # Reverse the sense of the orientation, in this case it refers
636
+ # to the direction to draw the sash not the direction that
637
+ # windows are stacked.
638
+ orient = { wx.HORIZONTAL : wx.VERTICAL,
639
+ wx.VERTICAL : wx.HORIZONTAL }[self._orient]
640
+
641
+ flag = 0
642
+ if self._isHot:
643
+ flag = wx.CONTROL_CURRENT
644
+
645
+ pos = 0
646
+ for sash in self._sashes[:-1]:
647
+ pos += sash
648
+ if wx.VERSION >= _RENDER_VER and not self._drawSashInBackgroundColour:
649
+ wx.RendererNative.Get().DrawSplitterSash(self, dc,
650
+ self.GetClientSize(),
651
+ pos, orient, flag)
652
+ else:
653
+ dc.SetPen(wx.TRANSPARENT_PEN)
654
+ dc.SetBrush(wx.Brush(self.GetBackgroundColour()))
655
+ sashsize = self._GetSashSize()
656
+ if orient == wx.VERTICAL:
657
+ x = pos
658
+ y = 0
659
+ w = sashsize
660
+ h = self.GetClientSize().height
661
+ else:
662
+ x = 0
663
+ y = pos
664
+ w = self.GetClientSize().width
665
+ h = sashsize
666
+ dc.DrawRectangle(x, y, w, h)
667
+
668
+ pos += self._GetSashSize()
669
+
670
+
671
+ def _DrawSashTracker(self, x, y):
672
+ # Draw a line to represent the dragging sash, for when not
673
+ # doing live updates
674
+ w, h = self.GetClientSize()
675
+ dc = wx.ScreenDC()
676
+
677
+ if self._orient == wx.HORIZONTAL:
678
+ x1 = x
679
+ y1 = 2
680
+ x2 = x
681
+ y2 = h-2
682
+ if x1 > w:
683
+ x1 = w
684
+ x2 = w
685
+ elif x1 < 0:
686
+ x1 = 0
687
+ x2 = 0
688
+ else:
689
+ x1 = 2
690
+ y1 = y
691
+ x2 = w-2
692
+ y2 = y
693
+ if y1 > h:
694
+ y1 = h
695
+ y2 = h
696
+ elif y1 < 0:
697
+ y1 = 0
698
+ y2 = 0
699
+
700
+ x1, y1 = self.ClientToScreen(x1, y1)
701
+ x2, y2 = self.ClientToScreen(x2, y2)
702
+
703
+ dc.SetLogicalFunction(wx.INVERT)
704
+ dc.SetPen(self._sashTrackerPen)
705
+ dc.SetBrush(wx.TRANSPARENT_BRUSH)
706
+ dc.DrawLine(x1, y1, x2, y2)
707
+ dc.SetLogicalFunction(wx.COPY)
708
+
709
+
710
+ def _SashHitTest(self, x, y, tolerance=5):
711
+ # if there are no splits then we're done.
712
+ if len(self._windows) < 2:
713
+ return -1
714
+
715
+ if self._orient == wx.HORIZONTAL:
716
+ z = x
717
+ else:
718
+ z = y
719
+
720
+ pos = 0
721
+ for idx, sash in enumerate(self._sashes[:-1]):
722
+ pos += sash
723
+ hitMin = pos - tolerance
724
+ hitMax = pos + self._GetSashSize() + tolerance
725
+
726
+ if z >= hitMin and z <= hitMax:
727
+ return idx
728
+
729
+ pos += self._GetSashSize()
730
+
731
+ return -1
732
+
733
+
734
+ def _SizeWindows(self):
735
+ # no windows yet?
736
+ if not self._windows:
737
+ return
738
+
739
+ # are there any pending size settings?
740
+ for window, spos in list(self._pending.items()):
741
+ idx = self._windows.index(window)
742
+ # TODO: this may need adjusted to make sure they all fit
743
+ # in the current client size
744
+ self._sashes[idx] = spos
745
+ del self._pending[window]
746
+
747
+ # are there any that still have a -1?
748
+ for idx, spos in enumerate(self._sashes[:-1]):
749
+ if spos == -1:
750
+ # TODO: this should also be adjusted
751
+ self._sashes[idx] = 100
752
+
753
+ cw, ch = self.GetClientSize()
754
+ border = self._GetBorderSize()
755
+ sash = self._GetSashSize()
756
+
757
+ if len(self._windows) == 1:
758
+ # there's only one, it's an easy layout
759
+ self._windows[0].SetSize(border, border,
760
+ cw - 2*border, ch - 2*border)
761
+ else:
762
+ if 'wxMSW' in wx.PlatformInfo:
763
+ self.Freeze()
764
+ if self._orient == wx.HORIZONTAL:
765
+ x = y = border
766
+ h = ch - 2*border
767
+ for idx, spos in enumerate(self._sashes[:-1]):
768
+ self._windows[idx].SetSize(x, y, spos, h)
769
+ x += spos + sash
770
+ # last one takes the rest of the space. TODO make this configurable
771
+ last = cw - 2*border - x
772
+ self._windows[idx+1].SetSize(x, y, last, h)
773
+ if last > 0:
774
+ self._sashes[idx+1] = last
775
+ else:
776
+ x = y = border
777
+ w = cw - 2*border
778
+ for idx, spos in enumerate(self._sashes[:-1]):
779
+ self._windows[idx].SetSize(x, y, w, spos)
780
+ y += spos + sash
781
+ # last one takes the rest of the space. TODO make this configurable
782
+ last = ch - 2*border - y
783
+ self._windows[idx+1].SetSize(x, y, w, last)
784
+ if last > 0:
785
+ self._sashes[idx+1] = last
786
+ if 'wxMSW' in wx.PlatformInfo:
787
+ self.Thaw()
788
+
789
+ self._DrawSash(wx.ClientDC(self))
790
+ self._needUpdating = False
791
+
792
+
793
+ def _DoSendEvent(self, evt):
794
+ return not self.GetEventHandler().ProcessEvent(evt) or evt.IsAllowed()
795
+
796
+ #----------------------------------------------------------------------
797
+
798
+ class MultiSplitterEvent(wx.PyCommandEvent):
799
+ """
800
+ This event class is almost the same as `wx.SplitterEvent` except
801
+ it adds an accessor for the sash index that is being changed. The
802
+ same event type IDs and event binders are used as with
803
+ `wx.SplitterEvent`.
804
+ """
805
+ def __init__(self, type=wx.wxEVT_NULL, splitter=None):
806
+ """
807
+ Constructor.
808
+
809
+ Used internally by wxWidgets only.
810
+
811
+ :param `eventType`:
812
+ :type `eventType`: EventType
813
+ :param `splitter`:
814
+ :type `splitter`: SplitterWindow
815
+
816
+ """
817
+ wx.PyCommandEvent.__init__(self, type)
818
+ if splitter:
819
+ self.SetEventObject(splitter)
820
+ self.SetId(splitter.GetId())
821
+ self.sashIdx = -1
822
+ self.sashPos = -1
823
+ self.isAllowed = True
824
+
825
+ def SetSashIdx(self, idx):
826
+ """
827
+ In the case of ``wxEVT_SPLITTER_SASH_POS_CHANGED`` events, sets the
828
+ new sash index.
829
+
830
+ In the case of ``wxEVT_SPLITTER_SASH_POS_CHANGING`` events, sets the
831
+ new tracking bar position so visual feedback during dragging will
832
+ represent that change that will actually take place. Set to -1 from
833
+ the event handler code to prevent reindexing.
834
+
835
+ May only be called while processing ``wxEVT_SPLITTER_SASH_POS_CHANGING``
836
+ and ``wxEVT_SPLITTER_SASH_POS_CHANGED`` events.
837
+
838
+ :param int `pos`: New sash index.
839
+
840
+ """
841
+ self.sashIdx = idx
842
+
843
+ def SetSashPosition(self, pos):
844
+ """
845
+ In the case of ``wxEVT_SPLITTER_SASH_POS_CHANGED`` events, sets the
846
+ new sash position.
847
+
848
+ In the case of ``wxEVT_SPLITTER_SASH_POS_CHANGING`` events, sets the
849
+ new tracking bar position so visual feedback during dragging will
850
+ represent that change that will actually take place. Set to -1 from
851
+ the event handler code to prevent repositioning.
852
+
853
+ May only be called while processing ``wxEVT_SPLITTER_SASH_POS_CHANGING``
854
+ and ``wxEVT_SPLITTER_SASH_POS_CHANGED`` events.
855
+
856
+ :param int `pos`: New sash position.
857
+
858
+ """
859
+ self.sashPos = pos
860
+
861
+ def GetSashIdx(self):
862
+ """
863
+ Returns the new sash index.
864
+
865
+ May only be called while processing ``wxEVT_SPLITTER_SASH_POS_CHANGING``
866
+ and ``wxEVT_SPLITTER_SASH_POS_CHANGED`` events.
867
+
868
+ :rtype: `int`
869
+
870
+ """
871
+ return self.sashIdx
872
+
873
+ def GetSashPosition(self):
874
+ """
875
+ Returns the new sash position.
876
+
877
+ May only be called while processing ``wxEVT_SPLITTER_SASH_POS_CHANGING``
878
+ and ``wxEVT_SPLITTER_SASH_POS_CHANGED`` events.
879
+
880
+ :rtype: `int`
881
+
882
+ """
883
+ return self.sashPos
884
+
885
+ # methods from wx.NotifyEvent
886
+ def Veto(self):
887
+ """
888
+ Prevents the change announced by this event from happening.
889
+
890
+ It is in general a good idea to notify the user about the reasons
891
+ for vetoing the change because otherwise the applications behaviour
892
+ (which just refuses to do what the user wants) might be quite
893
+ surprising.
894
+
895
+ """
896
+ self.isAllowed = False
897
+
898
+ def Allow(self):
899
+ """
900
+ This is the opposite of :meth:`Veto` : it explicitly allows the
901
+ event to be processed.
902
+
903
+ For most events it is not necessary to call this method as the events
904
+ are allowed anyhow but some are forbidden by default (this will be
905
+ mentioned in the corresponding event description).
906
+
907
+ """
908
+ self.isAllowed = True
909
+
910
+ def IsAllowed(self):
911
+ """
912
+ Returns ``True`` if the change is allowed (:meth:`Veto` hasn't been
913
+ called) or ``False`` otherwise (if it was).
914
+
915
+ :rtype: `bool`
916
+
917
+ """
918
+ return self.isAllowed
919
+
920
+
921
+
922
+ #----------------------------------------------------------------------
923
+
924
+
925
+