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/ogl/drawn.py ADDED
@@ -0,0 +1,900 @@
1
+ # -*- coding: utf-8 -*-
2
+ #----------------------------------------------------------------------------
3
+ # Name: drawn.py
4
+ # Purpose: DrawnShape class
5
+ #
6
+ # Author: Pierre Hjälm (from C++ original by Julian Smart)
7
+ #
8
+ # Created: 2004-08-25
9
+ # Copyright: (c) 2004 Pierre Hjälm - 1998 Julian Smart
10
+ # License: wxWindows license
11
+ # Tags: phoenix-port, unittest, py3-port, documented
12
+ # (c) 2021 Zombie
13
+ #----------------------------------------------------------------------------
14
+ """
15
+ The class :class:`~lib.ogl.drawn.DrawnShape`.
16
+
17
+ THIS DOES NOT SEEM TO BE USED ANYWHERE
18
+
19
+ """
20
+ import os.path
21
+
22
+ from .basic import RectangleShape
23
+ from .oglmisc import *
24
+
25
+ METAFLAGS_OUTLINE = 1
26
+ METAFLAGS_ATTACHMENTS = 2
27
+
28
+ DRAWN_ANGLE_0 = 0
29
+ DRAWN_ANGLE_90 = 1
30
+ DRAWN_ANGLE_180 = 2
31
+ DRAWN_ANGLE_270 = 3
32
+
33
+ # Drawing operations
34
+ DRAWOP_SET_PEN = 1
35
+ DRAWOP_SET_BRUSH = 2
36
+ DRAWOP_SET_FONT = 3
37
+ DRAWOP_SET_TEXT_COLOUR = 4
38
+ DRAWOP_SET_BK_COLOUR = 5
39
+ DRAWOP_SET_BK_MODE = 6
40
+ DRAWOP_SET_CLIPPING_RECT = 7
41
+ DRAWOP_DESTROY_CLIPPING_RECT = 8
42
+
43
+ DRAWOP_DRAW_LINE = 20
44
+ DRAWOP_DRAW_POLYLINE = 21
45
+ DRAWOP_DRAW_POLYGON = 22
46
+ DRAWOP_DRAW_RECT = 23
47
+ DRAWOP_DRAW_ROUNDED_RECT = 24
48
+ DRAWOP_DRAW_ELLIPSE = 25
49
+ DRAWOP_DRAW_POINT = 26
50
+ DRAWOP_DRAW_ARC = 27
51
+ DRAWOP_DRAW_TEXT = 28
52
+ DRAWOP_DRAW_SPLINE = 29
53
+ DRAWOP_DRAW_ELLIPTIC_ARC = 30
54
+
55
+
56
+ class DrawOp(object):
57
+ def __init__(self, theOp):
58
+ self._op = theOp
59
+
60
+ def GetOp(self):
61
+ return self._op
62
+
63
+ def GetPerimeterPoint(self, x1, y1, x2, y2, xOffset, yOffset, attachmentMode):
64
+ return False
65
+
66
+ def Scale(self,scaleX, scaleY):
67
+ """not implemented???"""
68
+ pass
69
+
70
+ def Translate(self, x, y):
71
+ """not implemented???"""
72
+ pass
73
+
74
+ def Rotate(self, x, y, theta, sinTheta, cosTheta):
75
+ """not implemented???"""
76
+ pass
77
+
78
+ class OpSetGDI(DrawOp):
79
+ """Set font, brush, text colour."""
80
+ def __init__(self, theOp, theImage, theGdiIndex, theMode = 0):
81
+ DrawOp.__init__(self, theOp)
82
+
83
+ self._gdiIndex = theGdiIndex
84
+ self._image = theImage
85
+ self._mode = theMode
86
+
87
+ def Do(self, dc, xoffset = 0, yoffset = 0):
88
+ if self._op == DRAWOP_SET_PEN:
89
+ # Check for overriding this operation for outline colour
90
+ if self._gdiIndex in self._image._outlineColours:
91
+ if self._image._outlinePen:
92
+ dc.SetPen(self._image._outlinePen)
93
+ else:
94
+ try:
95
+ dc.SetPen(self._image._gdiObjects[self._gdiIndex])
96
+ except IndexError:
97
+ pass
98
+ elif self._op == DRAWOP_SET_BRUSH:
99
+ # Check for overriding this operation for outline or fill colour
100
+ if self._gdiIndex in self._image._outlineColours:
101
+ # Need to construct a brush to match the outline pen's colour
102
+ if self._image._outlinePen:
103
+ br = wx.Brush(self._image._outlinePen, wx.BRUSHSTYLE_SOLID)
104
+ if br:
105
+ dc.SetBrush(br)
106
+ elif self._gdiIndex in self._image._fillColours:
107
+ if self._image._fillBrush:
108
+ dc.SetBrush(self._image._fillBrush)
109
+ else:
110
+ brush = self._image._gdiObjects[self._gdiIndex]
111
+ if brush:
112
+ dc.SetBrush(brush)
113
+ elif self._op == DRAWOP_SET_FONT:
114
+ try:
115
+ dc.SetFont(self._image._gdiObjects[self._gdiIndex])
116
+ except IndexError:
117
+ pass
118
+ elif self._op == DRAWOP_SET_TEXT_COLOUR:
119
+ dc.SetTextForeground(wx.Colour(self._r, self._g, self._b))
120
+ elif self._op == DRAWOP_SET_BK_COLOUR:
121
+ dc.SetTextBackground(wx.Colour(self._r, self._g, self._b))
122
+ elif self._op == DRAWOP_SET_BK_MODE:
123
+ dc.SetBackgroundMode(self._mode)
124
+
125
+
126
+ class OpSetClipping(DrawOp):
127
+ """Set/destroy clipping."""
128
+ def __init__(self, theOp, theX1, theY1, theX2, theY2):
129
+ DrawOp.__init__(self, theOp)
130
+
131
+ self._x1 = theX1
132
+ self._y1 = theY1
133
+ self._x2 = theX2
134
+ self._y2 = theY2
135
+
136
+ def Do(self, dc, xoffset, yoffset):
137
+ if self._op == DRAWOP_SET_CLIPPING_RECT:
138
+ dc.SetClippingRegion(self._x1 + xoffset, self._y1 + yoffset, self._x2 + xoffset, self._y2 + yoffset)
139
+ elif self._op == DRAWOP_DESTROY_CLIPPING_RECT:
140
+ dc.DestroyClippingRegion()
141
+
142
+ def Scale(self, scaleX, scaleY):
143
+ self._x1 *= scaleX
144
+ self._y1 *= scaleY
145
+ self._x2 *= scaleX
146
+ self._y2 *= scaleY
147
+
148
+ def Translate(self, x, y):
149
+ self._x1 += x
150
+ self._y1 += y
151
+
152
+
153
+ class OpDraw(DrawOp):
154
+ """Draw line, rectangle, rounded rectangle, ellipse, point, arc, text."""
155
+ def __init__(self, theOp, theX1, theY1, theX2, theY2, theRadius = 0.0, s = ""):
156
+ DrawOp.__init__(self, theOp)
157
+
158
+ self._x1 = theX1
159
+ self._y1 = theY1
160
+ self._x2 = theX2
161
+ self._y2 = theY2
162
+ self._x3 = 0.0
163
+ self._y3 = 0.0
164
+ self._radius = theRadius
165
+ self._textString = s
166
+
167
+ def Do(self, dc, xoffset, yoffset):
168
+ if self._op == DRAWOP_DRAW_LINE:
169
+ dc.DrawLine(*map(int, (self._x1 + xoffset, self._y1 + yoffset, self._x2 + xoffset, self._y2 + yoffset)))
170
+ elif self._op == DRAWOP_DRAW_RECT:
171
+ dc.DrawRectangle(*map(int, (self._x1 + xoffset, self._y1 + yoffset, self._x2, self._y2)))
172
+ elif self._op == DRAWOP_DRAW_ROUNDED_RECT:
173
+ dc.DrawRoundedRectangle(*map(int, (self._x1 + xoffset, self._y1 + yoffset, self._x2, self._y2)), self._radius)
174
+ elif self._op == DRAWOP_DRAW_ELLIPSE:
175
+ dc.DrawEllipse(*map(int, (self._x1 + xoffset, self._y1 + yoffset, self._x2, self._y2)))
176
+ elif self._op == DRAWOP_DRAW_ARC:
177
+ dc.DrawArc(*map(int, (self._x2 + xoffset, self._y2 + yoffset, self._x3 + xoffset, self._y3 + yoffset, self._x1 + xoffset, self._y1 + yoffset)))
178
+ elif self._op == DRAWOP_DRAW_ELLIPTIC_ARC:
179
+ dc.DrawEllipticArc(*map(int, (self._x1 + xoffset, self._y1 + yoffset, self._x2, self._y2)), self._x3 * 360 / (2 * math.pi), self._y3 * 360 / (2 * math.pi))
180
+ elif self._op == DRAWOP_DRAW_POINT:
181
+ dc.DrawPoint(*map(int, (self._x1 + xoffset, self._y1 + yoffset)))
182
+ elif self._op == DRAWOP_DRAW_TEXT:
183
+ dc.DrawText(self._textString, *map(int, (self._x1 + xoffset, self._y1 + yoffset)))
184
+ def Scale(self, scaleX, scaleY):
185
+ self._x1 *= scaleX
186
+ self._y1 *= scaleY
187
+ self._x2 *= scaleX
188
+ self._y2 *= scaleY
189
+
190
+ if self._op != DRAWOP_DRAW_ELLIPTIC_ARC:
191
+ self._x3 *= scaleX
192
+ self._y3 *= scaleY
193
+
194
+ self._radius *= scaleX
195
+
196
+ def Translate(self, x, y):
197
+ self._x1 += x
198
+ self._y1 += y
199
+
200
+ if self._op == DRAWOP_DRAW_LINE:
201
+ self._x2 += x
202
+ self._y2 += y
203
+ elif self._op == DRAWOP_DRAW_ARC:
204
+ self._x2 += x
205
+ self._y2 += y
206
+ self._x3 += x
207
+ self._y3 += y
208
+
209
+ def Rotate(self, x, y, theta, sinTheta, cosTheta):
210
+ newX1 = self._x1 * cosTheta + self._y1 * sinTheta + x * (1 - cosTheta) + y * sinTheta
211
+ newY1 = self._x1 * sinTheta + self._y1 * cosTheta + y * (1 - cosTheta) + x * sinTheta
212
+
213
+ if self._op == DRAWOP_DRAW_LINE:
214
+ newX2 = self._x2 * cosTheta - self._y2 * sinTheta + x * (1 - cosTheta) + y * sinTheta
215
+ newY2 = self._x2 * sinTheta + self._y2 * cosTheta + y * (1 - cosTheta) + x * sinTheta;
216
+
217
+ self._x1 = newX1
218
+ self._y1 = newY1
219
+ self._x2 = newX2
220
+ self._y2 = newY2
221
+
222
+ elif self._op in [DRAWOP_DRAW_RECT, DRAWOP_DRAW_ROUNDED_RECT, DRAWOP_DRAW_ELLIPTIC_ARC]:
223
+ # Assume only 0, 90, 180, 270 degree rotations.
224
+ # oldX1, oldY1 represents the top left corner. Find the
225
+ # bottom right, and rotate that. Then the width/height is
226
+ # the difference between x/y values.
227
+ oldBottomRightX = self._x1 + self._x2
228
+ oldBottomRightY = self._y1 + self._y2
229
+ newBottomRightX = oldBottomRightX * cosTheta - oldBottomRightY * sinTheta + x * (1 - cosTheta) + y * sinTheta
230
+ newBottomRightY = oldBottomRightX * sinTheta + oldBottomRightY * cosTheta + y * (1 - cosTheta) + x * sinTheta
231
+
232
+ # Now find the new top-left, bottom-right coordinates.
233
+ minX = min(newX1, newBottomRightX)
234
+ minY = min(newY1, newBottomRightY)
235
+ maxX = max(newX1, newBottomRightX)
236
+ maxY = max(newY1, newBottomRightY)
237
+
238
+ self._x1 = minX
239
+ self._y1 = minY
240
+ self._x2 = maxX - minX # width
241
+ self._y2 = maxY - minY # height
242
+
243
+ if self._op == DRAWOP_DRAW_ELLIPTIC_ARC:
244
+ # Add rotation to angles
245
+ self._x3 += theta
246
+ self._y3 += theta
247
+ elif self._op == DRAWOP_DRAW_ARC:
248
+ newX2 = self._x2 * cosTheta - self._y2 * sinTheta + x * (1 - cosTheta) + y * sinTheta
249
+ newY2 = self._x2 * sinTheta + self._y2 * cosTheta + y * (1 - cosTheta) + x * sinTheta
250
+ newX3 = self._x3 * cosTheta - self._y3 * sinTheta + x * (1 - cosTheta) + y * sinTheta
251
+ newY3 = self._x3 * sinTheta + self._y3 * cosTheta + y * (1 - cosTheta) + x * sinTheta
252
+
253
+ self._x1 = newX1
254
+ self._y1 = newY1
255
+ self._x2 = newX2
256
+ self._y2 = newY2
257
+ self._x3 = newX3
258
+ self._y3 = newY3
259
+
260
+
261
+ class OpPolyDraw(DrawOp):
262
+ """Draw polygon, polyline, spline."""
263
+ def __init__(self, theOp, thePoints):
264
+ DrawOp.__init__(self, theOp)
265
+
266
+ self._noPoints = len(thePoints)
267
+ self._points = thePoints
268
+
269
+ def Do(self, dc, xoffset, yoffset):
270
+ #print(self._points)
271
+ if self._op == DRAWOP_DRAW_POLYLINE:
272
+ dc.DrawLines(self._points, *map(int, (xoffset, yoffset)))
273
+ elif self._op == DRAWOP_DRAW_POLYGON:
274
+ dc.DrawPolygon(self._points, *map(int, (xoffset, yoffset)))
275
+ elif self._op == DRAWOP_DRAW_SPLINE:
276
+ dc.DrawSpline(self._points) # no offsets in DrawSpline
277
+
278
+ def Scale(self, scaleX, scaleY):
279
+ for i in range(self._noPoints):
280
+ self._points[i] = wx.Point(*map(int, (self._points[i][0] * scaleX, self._points[i][1] * scaleY)))
281
+
282
+ def Translate(self, x, y):
283
+ for i in range(self._noPoints):
284
+ self._points[i][0] += x
285
+ self._points[i][1] += y
286
+
287
+ def Rotate(self, x, y, theta, sinTheta, cosTheta):
288
+ for i in range(self._noPoints):
289
+ x1 = self._points[i][0]
290
+ y1 = self._points[i][1]
291
+
292
+ self._points[i] = x1 * cosTheta - y1 * sinTheta + x * (1 - cosTheta) + y * sinTheta, x1 * sinTheta + y1 * cosTheta + y * (1 - cosTheta) + x * sinTheta
293
+
294
+ def OnDrawOutline(self, dc, x, y, w, h, oldW, oldH):
295
+ dc.SetBrush(wx.TRANSPARENT_BRUSH)
296
+
297
+ # Multiply all points by proportion of new size to old size
298
+ x_proportion = abs(w / oldW)
299
+ y_proportion = abs(h / oldH)
300
+
301
+ dc.DrawPolygon([(x_proportion * x, y_proportion * y) for x, y in self._points], x, y)
302
+
303
+ def GetPerimeterPoint(self, x1, y1, x2, y2, xOffset, yOffset, attachmentMode):
304
+ # First check for situation where the line is vertical,
305
+ # and we would want to connect to a point on that vertical --
306
+ # oglFindEndForPolyline can't cope with this (the arrow
307
+ # gets drawn to the wrong place).
308
+ if attachmentMode == ATTACHMENT_MODE_NONE and x1 == x2:
309
+ # Look for the point we'd be connecting to. This is
310
+ # a heuristic...
311
+ for point in self._points:
312
+ if point[0] == 0:
313
+ if y2 > y1 and point[1] > 0:
314
+ return point[0]+xOffset, point[1]+yOffset
315
+ elif y2 < y1 and point[1] < 0:
316
+ return point[0]+xOffset, point[1]+yOffset
317
+
318
+ return FindEndForPolyline([ p[0] + xOffset for p in self._points ],
319
+ [ p[1] + yOffset for p in self._points ],
320
+ x1, y1, x2, y2)
321
+
322
+
323
+ class PseudoMetaFile(object):
324
+ """
325
+ A simple metafile-like class which can load data from a Windows
326
+ metafile on all platforms.
327
+ """
328
+ def __init__(self):
329
+ self._currentRotation = 0
330
+ self._rotateable = True
331
+ self._width = 0.0
332
+ self._height = 0.0
333
+ self._outlinePen = None
334
+ self._fillBrush = None
335
+ self._outlineOp = -1
336
+
337
+ self._ops = []
338
+ self._gdiObjects = []
339
+
340
+ self._outlineColours = []
341
+ self._fillColours = []
342
+
343
+ def Clear(self):
344
+ self._ops = []
345
+ self._gdiObjects = []
346
+ self._outlineColours = []
347
+ self._fillColours = []
348
+ self._outlineColours = -1
349
+
350
+ def IsValid(self):
351
+ return self._ops != []
352
+
353
+ def GetOps(self):
354
+ return self._ops
355
+
356
+ def SetOutlineOp(self, op):
357
+ self._outlineOp = op
358
+
359
+ def GetOutlineOp(self):
360
+ return self._outlineOp
361
+
362
+ def SetOutlinePen(self, pen):
363
+ self._outlinePen = pen
364
+
365
+ def GetOutlinePen(self, pen):
366
+ return self._outlinePen
367
+
368
+ def SetFillBrush(self, brush):
369
+ self._fillBrush = brush
370
+
371
+ def GetFillBrush(self):
372
+ return self._fillBrush
373
+
374
+ def SetSize(self, w, h):
375
+ self._width = w
376
+ self._height = h
377
+
378
+ def SetRotateable(self, rot):
379
+ self._rotateable = rot
380
+
381
+ def GetRotateable(self):
382
+ return self._rotateable
383
+
384
+ def GetFillColours(self):
385
+ return self._fillColours
386
+
387
+ def GetOutlineColours(self):
388
+ return self._outlineColours
389
+
390
+ def Draw(self, dc, xoffset, yoffset):
391
+ for op in self._ops:
392
+ op.Do(dc, xoffset, yoffset)
393
+
394
+ def Scale(self, sx, sy):
395
+ for op in self._ops:
396
+ op.Scale(sx, sy)
397
+
398
+ self._width *= sx
399
+ self._height *= sy
400
+
401
+ def Translate(self, x, y):
402
+ for op in self._ops:
403
+ op.Translate(x, y)
404
+
405
+ def Rotate(self, x, y, theta):
406
+ theta1 = theta - self._currentRotation
407
+ if theta1 == 0:
408
+ return
409
+
410
+ cosTheta = math.cos(theta1)
411
+ sinTheta = math.sin(theta1)
412
+
413
+ for op in self._ops:
414
+ op.Rotate(x, y, theta, sinTheta, cosTheta)
415
+
416
+ self._currentRotation = theta
417
+
418
+ def LoadFromMetaFile(self, filename, rwidth, rheight):
419
+ if not os.path.exist(filename):
420
+ return False
421
+
422
+ print("LoadFromMetaFile not implemented yet.")
423
+ return False # TODO
424
+
425
+ # Scale to fit size
426
+ def ScaleTo(self, w, h):
427
+ scaleX = w / self._width
428
+ scaleY = h / self._height
429
+
430
+ self.Scale(scaleX, scaleY)
431
+
432
+ def GetBounds(self):
433
+ maxX, maxY, minX, minY = -99999.9, -99999.9, 99999.9, 99999.9
434
+
435
+ for op in self._ops:
436
+ if op.GetOp() in [DRAWOP_DRAW_LINE, DRAWOP_DRAW_RECT, DRAWOP_DRAW_ROUNDED_RECT, DRAWOP_DRAW_ELLIPSE, DRAWOP_DRAW_POINT, DRAWOP_DRAW_TEXT]:
437
+ if op._x1 < minX:
438
+ minX = op._x1
439
+ if op._x1 > maxX:
440
+ maxX = op._x1
441
+ if op._y1 < minY:
442
+ minY = op._y1
443
+ if op._y1 > maxY:
444
+ maxY = op._y1
445
+ if op.GetOp() == DRAWOP_DRAW_LINE:
446
+ if op._x2 < minX:
447
+ minX = op._x2
448
+ if op._x2 > maxX:
449
+ maxX = op._x2
450
+ if op._y2 < minY:
451
+ minY = op._y2
452
+ if op._y2 > maxY:
453
+ maxY = op._y2
454
+ elif op.GetOp() in [ DRAWOP_DRAW_RECT, DRAWOP_DRAW_ROUNDED_RECT, DRAWOP_DRAW_ELLIPSE]:
455
+ if op._x1 + op._x2 < minX:
456
+ minX = op._x1 + op._x2
457
+ if op._x1 + op._x2 > maxX:
458
+ maxX = op._x1 + op._x2
459
+ if op._y1 + op._y2 < minY:
460
+ minY = op._y1 + op._y2
461
+ if op._y1 + op._y2 > maxX:
462
+ maxY = op._y1 + op._y2
463
+ elif op.GetOp() == DRAWOP_DRAW_ARC:
464
+ # TODO: don't yet know how to calculate the bounding box
465
+ # for an arc. So pretend it's a line; to get a correct
466
+ # bounding box, draw a blank rectangle first, of the
467
+ # correct size.
468
+ if op._x1 < minX:
469
+ minX = op._x1
470
+ if op._x1 > maxX:
471
+ maxX = op._x1
472
+ if op._y1 < minY:
473
+ minY = op._y1
474
+ if op._y1 > maxY:
475
+ maxY = op._y1
476
+ if op._x2 < minX:
477
+ minX = op._x2
478
+ if op._x2 > maxX:
479
+ maxX = op._x2
480
+ if op._y2 < minY:
481
+ minY = op._y2
482
+ if op._y2 > maxY:
483
+ maxY = op._y2
484
+ elif op.GetOp() in [DRAWOP_DRAW_POLYLINE, DRAWOP_DRAW_POLYGON, DRAWOP_DRAW_SPLINE]:
485
+ for point in op._points:
486
+ if point[0] < minX:
487
+ minX = point[0]
488
+ if point[0] > maxX:
489
+ maxX = point[0]
490
+ if point[1] < minY:
491
+ minY = point[1]
492
+ if point[1] > maxY:
493
+ maxY = point[1]
494
+
495
+ return [minX, minY, maxX, maxY]
496
+
497
+ # Calculate size from current operations
498
+ def CalculateSize(self, shape):
499
+ boundMinX, boundMinY, boundMaxX, boundMaxY = self.GetBounds()
500
+
501
+ # By Pierre Hjälm: This is NOT in the old version, which
502
+ # gets this totally wrong. Since the drawing is centered, we
503
+ # cannot get the width by measuring from left to right, we
504
+ # must instead make enough room to handle the largest
505
+ # coordinates
506
+ #self.SetSize(boundMaxX - boundMinX, boundMaxY - boundMinY)
507
+
508
+ w = max(abs(boundMinX), abs(boundMaxX)) * 2
509
+ h = max(abs(boundMinY), abs(boundMaxY)) * 2
510
+
511
+ self.SetSize(w, h)
512
+
513
+ if shape:
514
+ shape.SetWidth(self._width)
515
+ shape.SetHeight(self._height)
516
+
517
+ # Set of functions for drawing into a pseudo metafile
518
+ def DrawLine(self, pt1, pt2):
519
+ op = OpDraw(DRAWOP_DRAW_LINE, pt1[0], pt1[1], pt2[0], pt2[1])
520
+ self._ops.append(op)
521
+
522
+ def DrawRectangle(self, rect):
523
+ op = OpDraw(DRAWOP_DRAW_RECT, rect[0], rect[1], rect[2], rect[3])
524
+ self._ops.append(op)
525
+
526
+ def DrawRoundedRectangle(self, rect, radius):
527
+ op = OpDraw(DRAWOP_DRAW_ROUNDED_RECT, rect[0], rect[1], rect[2], rect[3])
528
+ op._radius = radius
529
+ self._ops.append(op)
530
+
531
+ def DrawEllipse(self, rect):
532
+ op = OpDraw(DRAWOP_DRAW_ELLIPSE, rect[0], rect[1], rect[2], rect[3])
533
+ self._ops.append(op)
534
+
535
+ def DrawArc(self, centrePt, startPt, endPt):
536
+ op = OpDraw(DRAWOP_DRAW_ARC, centrePt[0], centrePt[1], startPt[0], startPt[1])
537
+ op._x3, op._y3 = endPt
538
+
539
+ self._ops.append(op)
540
+
541
+ def DrawEllipticArc(self, rect, startAngle, endAngle):
542
+ startAngleRadians = startAngle * math.pi * 2 / 360
543
+ endAngleRadians = endAngle * math.pi * 2 / 360
544
+
545
+ op = OpDraw(DRAWOP_DRAW_ELLIPTIC_ARC, rect[0], rect[1], rect[2], rect[3])
546
+ op._x3 = startAngleRadians
547
+ op._y3 = endAngleRadians
548
+
549
+ self._ops.append(op)
550
+
551
+ def DrawPoint(self, pt):
552
+ op = OpDraw(DRAWOP_DRAW_POINT, pt[0], pt[1], 0, 0)
553
+ self._ops.append(op)
554
+
555
+ def DrawText(self, text, pt):
556
+ op = OpDraw(DRAWOP_DRAW_TEXT, pt[0], pt[1], 0, 0)
557
+ op._textString = text
558
+ self._ops.append(op)
559
+
560
+ def DrawLines(self, pts):
561
+ op = OpPolyDraw(DRAWOP_DRAW_POLYLINE, pts)
562
+ self._ops.append(op)
563
+
564
+ # flags:
565
+ # oglMETAFLAGS_OUTLINE: will be used for drawing the outline and
566
+ # also drawing lines/arrows at the circumference.
567
+ # oglMETAFLAGS_ATTACHMENTS: will be used for initialising attachment
568
+ # points at the vertices (perhaps a rare case...)
569
+ def DrawPolygon(self, pts, flags = 0):
570
+ op = OpPolyDraw(DRAWOP_DRAW_POLYGON, pts)
571
+ self._ops.append(op)
572
+
573
+ if flags & METAFLAGS_OUTLINE:
574
+ self._outlineOp = len(self._ops) - 1
575
+
576
+ def DrawSpline(self, pts):
577
+ op = OpPolyDraw(DRAWOP_DRAW_SPLINE, pts)
578
+ self._ops.append(op)
579
+
580
+ def SetClippingRect(self, rect):
581
+ OpSetClipping(DRAWOP_SET_CLIPPING_RECT, rect[0], rect[1], rect[2], rect[3])
582
+
583
+ def DestroyClippingRect(self):
584
+ op = OpSetClipping(DRAWOP_DESTROY_CLIPPING_RECT, 0, 0, 0, 0)
585
+ self._ops.append(op)
586
+
587
+ def SetPen(self, pen, isOutline = False):
588
+ self._gdiObjects.append(pen)
589
+ op = OpSetGDI(DRAWOP_SET_PEN, self, len(self._gdiObjects) - 1)
590
+ self._ops.append(op)
591
+
592
+ if isOutline:
593
+ self._outlineColours.append(len(self._gdiObjects) - 1)
594
+
595
+ def SetBrush(self, brush, isFill = False):
596
+ self._gdiObjects.append(brush)
597
+ op = OpSetGDI(DRAWOP_SET_BRUSH, self, len(self._gdiObjects) - 1)
598
+ self._ops.append(op)
599
+
600
+ if isFill:
601
+ self._fillColours.append(len(self._gdiObjects) - 1)
602
+
603
+ def SetFont(self, font):
604
+ self._gdiObjects.append(font)
605
+ op = OpSetGDI(DRAWOP_SET_FONT, self, len(self._gdiObjects) - 1)
606
+ self._ops.append(op)
607
+
608
+ def SetTextColour(self, colour):
609
+ op = OpSetGDI(DRAWOP_SET_TEXT_COLOUR, self, 0)
610
+ op._r, op._g, op._b = colour.Red(), colour.Green(), colour.Blue()
611
+
612
+ self._ops.append(op)
613
+
614
+ def SetBackgroundColour(self, colour):
615
+ op = OpSetGDI(DRAWOP_SET_BK_COLOUR, self, 0)
616
+ op._r, op._g, op._b = colour.Red(), colour.Green(), colour.Blue()
617
+
618
+ self._ops.append(op)
619
+
620
+ def SetBackgroundMode(self, mode):
621
+ op = OpSetGDI(DRAWOP_SET_BK_MODE, self, 0)
622
+ self._ops.append(op)
623
+
624
+ class DrawnShape(RectangleShape):
625
+ """
626
+ Draws a pseudo-metafile shape, which can be loaded from a simple
627
+ Windows metafile.
628
+
629
+ wxDrawnShape allows you to specify a different shape for each of four
630
+ orientations (North, West, South and East). It also provides a set of
631
+ drawing functions for programmatic drawing of a shape, so that during
632
+ construction of the shape you can draw into it as if it were a device
633
+ context.
634
+
635
+ Derived from:
636
+ RectangleShape
637
+ """
638
+ def __init__(self):
639
+ RectangleShape.__init__(self, 100, 50)
640
+ self._saveToFile = True
641
+ self._currentAngle = DRAWN_ANGLE_0
642
+
643
+ self._metafiles=PseudoMetaFile(), PseudoMetaFile(), PseudoMetaFile(), PseudoMetaFile()
644
+
645
+ def OnDraw(self, dc):
646
+ # Pass pen and brush in case we have force outline
647
+ # and fill colours
648
+ if self._shadowMode != SHADOW_NONE:
649
+ if self._shadowBrush:
650
+ self._metafiles[self._currentAngle]._fillBrush = self._shadowBrush
651
+ self._metafiles[self._currentAngle]._outlinePen = wx.Pen(wx.WHITE, 1, wx.PENSTYLE_TRANSPARENT)
652
+ self._metafiles[self._currentAngle].Draw(dc, self._xpos + self._shadowOffsetX, self._ypos + self._shadowOffsetY)
653
+
654
+ self._metafiles[self._currentAngle]._outlinePen = self._pen
655
+ self._metafiles[self._currentAngle]._fillBrush = self._brush
656
+ self._metafiles[self._currentAngle].Draw(dc, self._xpos, self._ypos)
657
+
658
+ def SetSize(self, w, h, recursive = True):
659
+ self.SetAttachmentSize(w, h)
660
+
661
+ if self.GetWidth() == 0.0:
662
+ scaleX = 1
663
+ else:
664
+ scaleX = w / self.GetWidth()
665
+
666
+ if self.GetHeight() == 0.0:
667
+ scaleY = 1
668
+ else:
669
+ scaleY = h / self.GetHeight()
670
+
671
+ for i in range(4):
672
+ if self._metafiles[i].IsValid():
673
+ self._metafiles[i].Scale(scaleX, scaleY)
674
+
675
+ self._width = w
676
+ self._height = h
677
+ self.SetDefaultRegionSize()
678
+
679
+ def Scale(self, sx, sy):
680
+ """Scale the shape by the given amount."""
681
+ for i in range(4):
682
+ if self._metafiles[i].IsValid():
683
+ self._metafiles[i].Scale(sx, sy)
684
+ self._metafiles[i].CalculateSize(self)
685
+
686
+ def Translate(self, x, y):
687
+ """Translate the shape by the given amount."""
688
+ for i in range(4):
689
+ if self._metafiles[i].IsValid():
690
+ self._metafiles[i].Translate(x, y)
691
+ self._metafiles[i].CalculateSize(self)
692
+
693
+ # theta is absolute rotation from the zero position
694
+ def Rotate(self, x, y, theta):
695
+ """Rotate about the given axis by the given amount in radians."""
696
+ self._currentAngle = self.DetermineMetaFile(theta)
697
+
698
+ if self._currentAngle == 0:
699
+ # Rotate metafile
700
+ if not self._metafiles[0].GetRotateable():
701
+ return
702
+
703
+ self._metafiles[0].Rotate(x, y, theta)
704
+
705
+ actualTheta = theta - self._rotation
706
+
707
+ # Rotate attachment points
708
+ sinTheta = math.sin(actualTheta)
709
+ cosTheta = math.cos(actualTheta)
710
+
711
+ for point in self._attachmentPoints:
712
+ x1 = point._x
713
+ y1 = point._y
714
+
715
+ point._x = x1 * cosTheta - y1 * sinTheta + x * (1.0 - cosTheta) + y * sinTheta
716
+ point._y = x1 * sinTheta + y1 * cosTheta + y * (1.0 - cosTheta) + x * sinTheta
717
+
718
+ self._rotation = theta
719
+
720
+ self._metafiles[self._currentAngle].CalculateSize(self)
721
+
722
+ # Which metafile do we use now? Based on current rotation and validity
723
+ # of metafiles.
724
+ def DetermineMetaFile(self, rotation):
725
+ tolerance = 0.0001
726
+ angles = [0.0, math.pi / 2, math.pi, 3 * math.pi / 2]
727
+
728
+ whichMetaFile = 0
729
+
730
+ for i in range(4):
731
+ if RoughlyEqual(rotation, angles[i], tolerance):
732
+ whichMetaFile = i
733
+ break
734
+
735
+ if whichMetaFile > 0 and not self._metafiles[whichMetaFile].IsValid():
736
+ whichMetaFile = 0
737
+
738
+ return whichMetaFile
739
+
740
+ def OnDrawOutline(self, dc, x, y, w, h):
741
+ if self._metafiles[self._currentAngle].GetOutlineOp() != -1:
742
+ op = self._metafiles[self._currentAngle].GetOps()[self._metafiles[self._currentAngle].GetOutlineOp()]
743
+ if op.OnDrawOutline(dc, x, y, w, h, self._width, self._height):
744
+ return
745
+
746
+ # Default... just use a rectangle
747
+ RectangleShape.OnDrawOutline(self, dc, x, y, w, h)
748
+
749
+ # Get the perimeter point using the special outline op, if there is one,
750
+ # otherwise use default wxRectangleShape scheme
751
+ def GetPerimeterPoint(self, x1, y1, x2, y2):
752
+ if self._metafiles[self._currentAngle].GetOutlineOp() != -1:
753
+ op = self._metafiles[self._currentAngle].GetOps()[self._metafiles[self._currentAngle].GetOutlineOp()]
754
+ p = op.GetPerimeterPoint(x1, y1, x2, y2, self.GetX(), self.GetY(), self.GetAttachmentMode())
755
+ if p:
756
+ return p
757
+
758
+ return RectangleShape.GetPerimeterPoint(self, x1, y1, x2, y2)
759
+
760
+ def LoadFromMetaFile(self, filename):
761
+ """Load a (very simple) Windows metafile, created for example by
762
+ Top Draw, the Windows shareware graphics package."""
763
+ return self._metafiles[0].LoadFromMetaFile(filename)
764
+
765
+ # Set of functions for drawing into a pseudo metafile.
766
+ # They use integers, but doubles are used internally for accuracy
767
+ # when scaling.
768
+ def DrawLine(self, pt1, pt2):
769
+ self._metafiles[self._currentAngle].DrawLine(pt1, pt2)
770
+
771
+ def DrawRectangle(self, rect):
772
+ self._metafiles[self._currentAngle].DrawRectangle(rect)
773
+
774
+ def DrawRoundedRectangle(self, rect, radius):
775
+ """Draw a rounded rectangle.
776
+
777
+ radius is the corner radius. If radius is negative, it expresses
778
+ the radius as a proportion of the smallest dimension of the rectangle.
779
+ """
780
+ self._metafiles[self._currentAngle].DrawRoundedRectangle(rect, radius)
781
+
782
+ def DrawEllipse(self, rect):
783
+ self._metafiles[self._currentAngle].DrawEllipse(rect)
784
+
785
+ def DrawArc(self, centrePt, startPt, endPt):
786
+ """Draw an arc."""
787
+ self._metafiles[self._currentAngle].DrawArc(centrePt, startPt, endPt)
788
+
789
+ def DrawEllipticArc(self, rect, startAngle, endAngle):
790
+ """Draw an elliptic arc."""
791
+ self._metafiles[self._currentAngle].DrawEllipticArc(rect, startAngle, endAngle)
792
+
793
+ def DrawPoint(self, pt):
794
+ self._metafiles[self._currentAngle].DrawPoint(pt)
795
+
796
+ def DrawText(self, text, pt):
797
+ self._metafiles[self._currentAngle].DrawText(text, pt)
798
+
799
+ def DrawLines(self, pts):
800
+ self._metafiles[self._currentAngle].DrawLines(pts)
801
+
802
+ def DrawPolygon(self, pts, flags = 0):
803
+ """Draw a polygon.
804
+
805
+ flags can be one or more of:
806
+ METAFLAGS_OUTLINE (use this polygon for the drag outline) and
807
+ METAFLAGS_ATTACHMENTS (use the vertices of this polygon for attachments).
808
+ """
809
+ if flags and METAFLAGS_ATTACHMENTS:
810
+ self.ClearAttachments()
811
+ for i in range(len(pts)):
812
+ # TODO: AttachmentPoint does not excist as per PyLint, what should it be???
813
+ self._attachmentPoints.append(AttachmentPoint(i,pts[i][0],pts[i][1]))
814
+ self._metafiles[self._currentAngle].DrawPolygon(pts, flags)
815
+
816
+ def DrawSpline(self, pts):
817
+ self._metafiles[self._currentAngle].DrawSpline(pts)
818
+
819
+ def SetClippingRect(self, rect):
820
+ """Set the clipping rectangle."""
821
+ self._metafiles[self._currentAngle].SetClippingRect(rect)
822
+
823
+ def DestroyClippingRect(self):
824
+ """Destroy the clipping rectangle."""
825
+ self._metafiles[self._currentAngle].DestroyClippingRect()
826
+
827
+ def SetDrawnPen(self, pen, isOutline = False):
828
+ """Set the pen for this metafile.
829
+
830
+ If isOutline is True, this pen is taken to indicate the outline
831
+ (and if the outline pen is changed for the whole shape, the pen
832
+ will be replaced with the outline pen).
833
+ """
834
+ self._metafiles[self._currentAngle].SetPen(pen, isOutline)
835
+
836
+ def SetDrawnBrush(self, brush, isFill = False):
837
+ """Set the brush for this metafile.
838
+
839
+ If isFill is True, the brush is used as the fill brush.
840
+ """
841
+ self._metafiles[self._currentAngle].SetBrush(brush, isFill)
842
+
843
+ def SetDrawnFont(self, font):
844
+ self._metafiles[self._currentAngle].SetFont(font)
845
+
846
+ def SetDrawnTextColour(self, colour):
847
+ """Set the current text colour for the current metafile."""
848
+ self._metafiles[self._currentAngle].SetTextColour(colour)
849
+
850
+ def SetDrawnBackgroundColour(self, colour):
851
+ """Set the current background colour for the current metafile."""
852
+ self._metafiles[self._currentAngle].SetBackgroundColour(colour)
853
+
854
+ def SetDrawnBackgroundMode(self, mode):
855
+ """Set the current background mode for the current metafile."""
856
+ self._metafiles[self._currentAngle].SetBackgroundMode(mode)
857
+
858
+ def CalculateSize(self):
859
+ """Calculate the wxDrawnShape size from the current metafile.
860
+
861
+ Call this after you have drawn into the shape.
862
+ """
863
+ self._metafiles[self._currentAngle].CalculateSize(self)
864
+
865
+ def DrawAtAngle(self, angle):
866
+ """Set the metafile for the given orientation, which can be one of:
867
+
868
+ * DRAWN_ANGLE_0
869
+ * DRAWN_ANGLE_90
870
+ * DRAWN_ANGLE_180
871
+ * DRAWN_ANGLE_270
872
+ """
873
+ self._currentAngle = angle
874
+
875
+ def GetAngle(self):
876
+ """Return the current orientation, which can be one of:
877
+
878
+ * DRAWN_ANGLE_0
879
+ * DRAWN_ANGLE_90
880
+ * DRAWN_ANGLE_180
881
+ * DRAWN_ANGLE_270
882
+ """
883
+ return self._currentAngle
884
+
885
+ def GetRotation(self):
886
+ """Return the current rotation of the shape in radians."""
887
+ return self._rotation
888
+
889
+ def SetSaveToFile(self, save):
890
+ """If save is True, the image will be saved along with the shape's
891
+ other attributes. The reason why this might not be desirable is that
892
+ if there are many shapes with the same image, it would be more
893
+ efficient for the application to save one copy, and not duplicate
894
+ the information for every shape. The default is True.
895
+ """
896
+ self._saveToFile = save
897
+
898
+ def GetMetaFile(self, which = 0):
899
+ """Return a reference to the internal 'pseudo-metafile'."""
900
+ return self._metafiles[which]